繁体   English   中英

为什么我的Promise.race实现无法正常工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM