首页 > 解决方案 > asyc\await 语法是否解析链式函数?

问题描述

在这个例子中,如果函数被运行,两个 Promise 会在fooreturn 之前得到解决吗?

async function() {
    var foo = await iReturnAPromise().iReturnAPromiseUnrelatedToMyParent();
    return foo;
}

标签: javascriptasync-await

解决方案


foo事实上,只能进行一项决议。你可能会喜欢

foo = await iReturnAPromise().then(v => (doSomeThingWith(v), iReturnAPromiseUnrelatedToMyParent()));

在这种情况下,foo将分配iReturnAPromiseUnrelatedToMyParent. 但是,如果您想访问两种分辨率(彼此独立),那么您可能会喜欢;

async function test(){
    [foo,bar] = await Promise.all([Promise.resolve(10), Promise.resolve(20)]);
    return [foo,bar];
}

test().then(([a,b]) => console.log(a,b));


推荐阅读