Compte tenu des exemples de code ci-dessous, y a-t-il une différence de comportement et, si oui, quelles sont ces différences?
return await promise
async function delay1Second() {
return (await delay(1000));
}
return promise
async function delay1Second() {
return delay(1000);
}
Si je comprends bien, le premier aurait une gestion des erreurs dans la fonction asynchrone, et les erreurs sortiraient de la promesse de la fonction async. Cependant, la seconde nécessiterait un tick de moins. Est-ce correct?
Cet extrait de code n'est qu'une fonction courante pour renvoyer une promesse à titre de référence.
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async
de votre second ( return promise
) échantillon.
promise.then(() => nestedPromise)
s'aplatirait et "suivrait" le nestedPromise
. Intéressant à quel point c'est différent des tâches imbriquées dans C # où nous aurions à le Unwrap
faire. D'un autre côté, il semble que cela await somePromise
appelle Promise.resolve(somePromise).then
, plutôt que juste somePromise.then
, avec quelques différences sémantiques intéressantes.