async/await
链中的所有函数都必须使用async/await
关键字吗?
async function one() {
return await fetch(.....);
}
async function two() {
return await one();
}
async function three() {
return await two();
}
我在教程中看到了一些示例,其中调用者不必使用关键字。
答案 0 :(得分:2)
否,至少在此示例中不是-如果您有一个仅await
进行承诺并return
进行结果的函数,则可以仅返回该Promise,而无需任何{{ 1}}或async
:
await
如果您想要一个扁平的函数主体,则在该函数消费一个Promise时需要使用function one() {
return fetch(.....);
}
function two() {
return one();
}
function three() {
return two();
}
,并且需要在将另一个已解决的Promise返回给调用者之前做其他事情。例如:
await
在这里,async function one() {
const fetchResult = await fetch(.....);
// do something with fetchResult
return foo;
}
function two() {
return one();
}
function three() {
return two();
}
正在one
进行await
调用,然后在返回Promise之前对其进行处理,但是fetch
和two
不会不必是three
,因为它们只是在调用一个返回Promise的函数并将该Promise返回给调用者。如果async
或two
还必须在等待之后但在解决之前先做些,那么他们必须使用three
(如果您想要一个扁平的功能主体):
await