-2

このスニペットでは、getFirst()真の値を返す場合getSecond()は評価されないことはよく知られています。

const result = getFirst() || getSecond();

ただし、非同期関数にも同じことが当てはまるかどうかは興味があります。

const result = (await getFirstAsync()) || (await getSyncAsync());

2 番目の promise を開始しますか、それとも最初の promise が最初に解決されるのを待ちますか?

4

1 に答える 1

2

これは簡単にテストできます。

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});

})();

2 番目の関数は呼び出されません。

于 2019-12-08T21:13:33.100 に答える