有没有办法等待异步函数?类似yield*
(带星号)的东西将委托给另一个生成器函数。
例如:
asyncFunction1 = async () => {
await promise1;
await promise2;
}
asyncFunction2 = async () => {
await asyncFunction1(); // can we do that or it MUST be a promise?
}
答案 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);
}();