gpt4 book ai didi

javascript - 获得第一个实现的 promise

转载 作者:数据小太阳 更新时间:2023-10-29 05:45:08 26 4
gpt4 key购买 nike

如果我有两个 promise A 和 B,其中只有一个会成功,我如何才能获得成功实现的那个?我正在寻找类似于 Promise.race 的东西,但它只会返回第一个实现的 promise 。我正在使用来自 ES6 的 promise 。

最佳答案

反转 promise 的极性,然后你可以使用 Promise.all,因为它拒绝第一个被拒绝的 promise,反转后对应于第一个实现的 promise:

const invert  = p  => new Promise((res, rej) => p.then(rej, res));
const firstOf = ps => invert(Promise.all(ps.map(invert)));

// Utility routines used only in testing.
const wait = ms => new Promise(res => setTimeout(() => res(ms), ms));
const fail = f => Promise.reject(f);
const log = p => p.then(v => console.log("pass", v), v => console.log("fail", v));

// Test.
log(firstOf([wait(1000), wait(500) ]));
log(firstOf([wait(1000), fail("f1")]));
log(firstOf([fail("f1"), fail("f2")]));

这将返回第一个实现的 promise 的值,或者如果全部拒绝,则返回一系列拒绝原因。

关于javascript - 获得第一个实现的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39940152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com