首页 > 其他 > 详细

改写promise并添加超时处理

时间:2020-08-17 08:22:27      阅读:190      评论:0      收藏:0      [点我收藏+]

我们都知道Promise.all()方法在有一个Promise reject以后,请求结果只返回第一个reject,我们进行了改写,在有请求reject时也可以获取所有结果,并给每个请求添加超时处理。

代码如下:

const promiseall = (all) => {
  
  const promiseTimeout = new Promise((resolve, reject) => {
    setTimeout(() => {
      reject(‘请求超时‘)
    },1000)
  })
 
  return new Promise((resolve, reject) => {
    const res = new Array(all.length)
    let count = 0
    for(let i=0;i<all.length;i++){
      Promise.race([all[i], promiseTimeout]).then((value) => {
        console.log(value)
        count ++
        res[i] = value
        if (count === all.length) {
          return resolve(res)
        }
      },(e)=>{
        count ++
        res[i] = e
        if (count === all.length) {
         return resolve(res)
        }
      })      
    }
  })
}


let p = new Promise(function(reslove,reject){
    reslove(‘成功1‘)
})
let p1 = new Promise(function(reslove,reject){
  setTimeout(() => {
      reslove(‘成功2‘)
    },2000)
})
promiseall([p,p1]).then((res)=> {
  console.log(res)
}).catch((e) => {
  console.log(e)
})

改写promise并添加超时处理

原文:https://www.cnblogs.com/fenfen/p/13515259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!