Dados os exemplos de código abaixo, há alguma diferença no comportamento e, em caso afirmativo, quais são essas diferenças?
return await promise
async function delay1Second() {
return (await delay(1000));
}
return promise
async function delay1Second() {
return delay(1000);
}
Pelo que entendi, o primeiro teria tratamento de erros dentro da função assíncrona, e os erros surgiam na promessa da função assíncrona. No entanto, o segundo exigiria um tique a menos. Isso está correto?
Este snippet é apenas uma função comum para retornar uma promessa para referência.
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async
de sua segunda ( return promise
) amostra.
promise.then(() => nestedPromise)
achataria e "seguiria" o nestedPromise
. Interessante como é diferente de tarefas aninhadas em C # onde teríamos que fazê- Unwrap
lo. Em uma nota lateral, parece que await somePromise
chama Promise.resolve(somePromise).then
, em vez de apenas somePromise.then
, com algumas diferenças semânticas interessantes.