[英]Why my implementation of Promise.race isn't working?
我有一个任务,应该在不使用itef的情况下实现Promise.race函数。
我已经找到了可以正常工作的代码,但是控制台抛出错误
"TypeError: promise is not a function"
。
function promiseRace(...promises) {
return new Promise((resolve, reject) => {
for(const promise of promises)
promise.then(resolve, reject);
})
};
我也尝试过这个,但是它显示了相同的错误(大约p):
const promiseRace = (...promises) {
new Promise((res, rej) => {
promises.forEach(p => p.then(res).catch(rej));
})
};
有谁知道为什么它不起作用?
您的后一个示例缺少第二行的return语句: *return* new Promise(...
您的第一个示例正常工作(请参见下文),但请注意,标准Promise.race
接受数组参数,而您的实现接受可变参数:
function promiseRace(...promises) { return new Promise((resolve, reject) => { for (const promise of promises) promise.then(resolve, reject); }) } let slowPromise = new Promise(r => setTimeout(() => r('slow'), 2000)); let quickPromise = new Promise(r => setTimeout(() => r('quick'), 1000)); promiseRace(slowPromise, quickPromise).then(a => console.log('promiseRace', a)); Promise.race([slowPromise, quickPromise]).then(a => console.log('Promise.race', a));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.