请实现一个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 对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~