众所周知,在此代码段中,如果getFirst()
返回真值,getSecond()
则不进行评估:
const result = getFirst() || getSecond();
但是,我很好奇异步函数是否同样适用:
const result = (await getFirstAsync()) || (await getSyncAsync());
它是启动第二个承诺,还是等待第一个得到解决?
众所周知,在此代码段中,如果getFirst()
返回真值,getSecond()
则不进行评估:
const result = getFirst() || getSecond();
但是,我很好奇异步函数是否同样适用:
const result = (await getFirstAsync()) || (await getSyncAsync());
它是启动第二个承诺,还是等待第一个得到解决?
这是微不足道的测试。
function getFirstAsync() {
return new Promise(res => {
console.log("getFirstAsync");
res(true);
});
}
function getSyncAsync() {
return new Promise(res => {
console.log("getSyncAsync");
res(false);
});
}
(async function () {
const result = (await getFirstAsync()) || (await getSyncAsync());
console.log({result});
})();
不调用第二个函数。