Враховуючи наведені нижче зразки коду, чи є якась різниця у поведінці, і, якщо так, то які ці відмінності?
return await promise
async function delay1Second() {
return (await delay(1000));
}
return promise
async function delay1Second() {
return delay(1000);
}
Наскільки я розумію, перший мав би обробляти помилки в рамках функції асинхронізації, і помилки виходили з обіцянки функції асинхронізації. Однак для другого потрібно було б на одного кліща менше. Це правильно?
Цей фрагмент - це просто поширена функція повернення Promise для посилання.
function delay(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async
з вашого другого ( return promise
) зразка.
promise.then(() => nestedPromise)
буде сплющуватися і "слідувати" за nestedPromise
. Цікаво, чим це відрізняється від вкладених завдань у C #, де нам це доведеться Unwrap
. У додатковій примітці виявляється, що await somePromise
дзвінки Promise.resolve(somePromise).then
, а не просто somePromise.then
, мають деякі цікаві семантичні відмінності.