Враховуючи наведені нижче зразки коду, чи є якась різниця у поведінці, і, якщо так, то які ці відмінності?
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, мають деякі цікаві семантичні відмінності.