等待异步功能

时间:2017-06-18 17:19:40

标签: javascript async-await

有没有办法等待异步函数?类似yield*(带星号)的东西将委托给另一个生成器函数。

例如:

asyncFunction1 = async () => {
    await promise1;
    await promise2;
}

asyncFunction2 = async () => {
    await asyncFunction1(); // can we do that or it MUST be a promise?
}

1 个答案:

答案 0 :(得分:2)

标记函数async会使其隐式返回一个承诺:

  

调用async函数时,它返回Promise。当async函数返回一个值时,将使用返回的值解析Promise。当async函数抛出异常或某个值时,Promise将被抛出的值被拒绝。

source

换句话说,您可以在异步函数上await,即使该函数返回非Promise值(因为该值将自动包装为Promise):

async function test() {
  return 123;
}

void async function() {
  let value = await test();
  console.log('value', value);
}();