Recentemente, ho trascorso molto tempo a tentare di immergermi e comprendere le Promesse di Javascript, in particolare quelle che aderiscono alle Promesse / A + spec . Quello che sto cercando di capire è se Promises
effettivamente offra agli sviluppatori strumenti aggiuntivi in particolare rispetto a async
basato su CPS, o se è principalmente zucchero sintattico e uno strumento per ridurre la verbosità o semplificare alcuni comportamenti.
Un argomento che ho ascoltato per le promesse è la gestione degli errori. In tal caso, utilizzando la libreria async
è molto facile eseguire un async.waterfall
di funzioni, ognuna in attesa del precedente per il completamento, ognuna avvolta in un try / catch per gestire gli errori sincroni (poiché né Promises
, né async
gestisce gli errori asincroni), passando gli errori rilevati a un gestore degli errori. In tale situazione, Promises
e async
si comportano in modo identico per quanto riguarda la semantica degli errori ( sintesi che mostra questo comportamento ).
Un altro argomento che ho ascoltato per le promesse sono i metodi a prova di futuro che sono ora sincronizzati, ma in seguito asincroni. La teoria è che se la funzione restituisce una promessa, non importa cosa succederebbe se fosse modificata in seguito. Poiché sia il mittente che il destinatario devono essere modificati per aderire al contratto di promessa, non è possibile affermare lo stesso argomento per modificare sia il mittente che il destinatario per utilizzare il contratto CPS, anche se è sincrono, per verificarlo in futuro?
Quindi con questo in mente c'è un caso d'uso a cui puoi pensare che può essere risolto in modo ottimale solo da Promises
o il loro utilizzo è davvero più un caso di preferenza e il desiderio di ridurre la verbosità e ridurre le possibilità di errore?