#javascript #node.js #asynchronous #promise #async-await
#javascript #node.js #асинхронный #обещание #async-await
Вопрос:
Если использование return await
не требуется, должна ли функция оставаться async
?
Использование return await внутри асинхронной функции сохраняет текущую функцию в стеке вызовов до тех пор, пока ожидаемое обещание не будет выполнено, за счет дополнительной микрозадачи перед выполнением внешнего обещания
https://eslint.org/docs/rules/no-return-await
Пример 1
async function foo() {
return await bar();
}
Пример 2
async function foo() {
return bar();
}
Пример 3
function foo() {
return bar();
}
Панель
async function bar() {
const data = await externalCall();
const result = anotherFunction(data);
return resu<
}
Если первый пример становится вторым примером, не должен ли он фактически стать третьим примером?
Ответ №1:
Я не думаю, что пример 3 совпадает с примером 2. Асинхронность гарантирует, что функция возвращает обещание и оборачивает в него не-обещания. Смотрите https://javascript.info/async-await#:~:text=Async functionsamp;text=The word “async” before a,in a resolved promise automatically.amp;text=So, async ensures that the,wraps non-promises in it .
Комментарии:
1. В таком случае можно ли что-нибудь получить, обернув обещание в другое обещание? Конечно, это бессмысленно?
2. Я думаю, что это бессмысленно, если вы не вернете обещание.
3. Где обещание, обернутое в другое обещание?
4. Я не знаю, но я думал, что это был небольшой побочный вопрос от newprogrammer
Ответ №2:
Да, нет смысла использовать асинхронность, если функция не возвращает await.
Комментарии:
1. Это не так. AsyncFunctions имеют большое преимущество в том, что всегда возвращают обещание, даже в случае синхронного броска, который будет восприниматься вызывающим как асинхронный бросок, то есть отклоненное обещание.