« We have a problem with Promises » par Nolan Lawson, 18.05.2015
▻https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html
Quoiqu’il date, l’article est encore une lecture utile. Dans nos rencontres Gōng-fu I/O, je le cite à l’occasion, en rappelant qu’avec les Promise en JS, il faut essentiellement se souvenir de ces deux règles :
1. les clauses .then()
et .catch()
prennent une fonction comme argument ; rien d’autre (cf. section « Advanced mistake #5 : promises fall through ») ;
2. les fonctions qu’on passe à ces clauses .then()
et .catch()
(ou à la forme new Promise(…,…)
) ne peuvent/doivent faire que ces trois choses-ci :
a. retourner une nouvelle Promise ;
b. retourner une valeur scalaire (primitive ou objet JS) ;
c. soulever une exception avec throw
.
Une grande part des problèmes avec les Promise sont réglés en pratique par la vérification de ces deux règles.