请实现一个Promise.race

Promise.race() 是一个 JavaScript Promise API 的方法,它接收一个 promise 对象的集合(例如,一个数组)作为参数,并返回一个新的 promise 对象,这个新的 promise 会在输入的 promise 集合中的任何一个 promise 状态改变为完成(fulfilled)或拒绝(rejected)时,就立刻以同样的结果改变状态。

以下是一个简单的 Promise.race() 的实现:

function PromiseRace(promises) {
    return new Promise((resolve, reject) => {
        promises.forEach((promise) => {
            promise.then(resolve).catch(reject);
        });
    });
}

这个 PromiseRace 函数接收一个包含 promise 对象的数组 promises。它创建并返回一个新的 promise 对象。这个新的 promise 对象使用 forEach 循环来监听 promises 数组中的每一个 promise 对象。如果任何一个 promise 对象状态变为完成(fulfilled),新的 promise 对象就会立刻调用 resolve 方法并以同样的结果完成。同样,如果任何一个 promise 对象状态变为拒绝(rejected),新的 promise 对象就会立刻调用 reject 方法并以同样的结果拒绝。

注意,这个实现假设 promises 数组中的每一个元素都是一个 promise 对象。如果数组中包含非 promise 对象,这个实现可能会产生意外的结果。在实际使用中,你可能需要添加一些额外的错误检查和处理逻辑来确保函数的健壮性。

另外,这个实现没有处理 promises 数组为空的情况。如果 promises 数组为空,PromiseRace 函数会返回一个永远不会改变状态的 promise 对象。在实际使用中,你可能需要添加一些额外的逻辑来处理这种情况,例如,如果 promises 数组为空,就立刻以某个默认值完成新的 promise 对象。

posted @   王铁柱6  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示