码迷,mamicode.com
首页 > 其他好文 > 详细

改写promise并添加超时处理

时间:2020-08-19 19:25:37      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:第一个   lov   function   settime   结果   请求   UNC   返回   code   

我们都知道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并添加超时处理

标签:第一个   lov   function   settime   结果   请求   UNC   返回   code   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!