async / await链中的所有功能都必须使用async / await关键字吗?

时间:2019-03-19 21:38:30

标签: javascript async-await

async/await链中的所有函数都必须使用async/await关键字吗?

async function one() {
  return await fetch(.....);
}

async function two() {
  return await one();
}

async function three() {
  return await two();
}

我在教程中看到了一些示例,其中调用者不必使用关键字。

1 个答案:

答案 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之前对其进行处理,但是fetchtwo不会不必是three,因为它们只是在调用一个返回Promise的函数并将该Promise返回给调用者。如果asynctwo还必须在等待之后但在解决之前先做些,那么他们必须使用three(如果您想要一个扁平的功能主体):

await