簡體   English   中英

Promise.race() 的實現

[英]Implementation of Promise.race()

我在 JavaScript 中遇到Promise.race()方法的實現,它按預期工作,但對我來說沒有多大意義。

const race = (...promises) =>
    new Promise((res, rej) => {
        promises.forEach(p => p.then(res).catch(rej));
});

forEach循環如何最終分配特定的 promise的功能?

根據定義,promise 只解決/拒絕一次,無論您調用resolvereject頻率如何。 因此,您構造的承諾將解析為所傳遞的承諾的第一個承諾所解決的任何問題。

我想你可以舉一個更簡單的例子,為變量分配一些新名稱,這樣會更容易理解。

const race = ([A, B, C]) =>
    const outer = new Promise((resolveRace, rejectRace) => {
        A.then(resolveRace).catch(rejectRace); // A wins 
        B.then(resolveRace).catch(rejectRace); // B wins 
        C.then(resolveRace).catch(rejectRace); // C wins 
    }
    return outer;
});

對於每個“內部”承諾,我們使用“外部”承諾resolveRacerejectRace函數分配成功/錯誤回調。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM