请实现一个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 对象。
浙公网安备 33010602011771号