promise函数队列执行问题

//Promise封装的函数
function app(num,data){
 
}

如果想调用成功后再次去执行自身

var data=[...]
//执行次数为data.length=3
app(0)
.then(function(res){
    console.log(res)
    return app(1)
})
.then(function(res){
     console.log(res)
    return app(2)
});

执行次数如果不确定该怎么去实现,上面执行了3次,返回的data数据长度不确定。

阅读 1.7k
3 个回答
function app (num, data) {
  return new Promise(function (resolve, reject) {
    resolve(num)
  })
}
let data = [1, 2, 3]
let res = Promise.resolve()
for (let index = 0; index < data.length; index++) {
  res = res.then(v => {
    console.log(v)
    return app(index)
  })
}

如果你每次执行app()互相没有联系 可以放在一个数组里 用Promise.all来执行

let p =[]
for(let i=0;i<data.length;i++){
  p.push(app(i,data))
}
Promise.all(p).then(res=>{
  console.log(res)
})
function app(num, data) {
    return new Promise(function (resolve, reject) {
        resolve(num)
    })
}

function test(arr, cb) {
    return arr.reduce((p, v) => p.then(() => cb(v)), Promise.resolve())
}

test([4, 1, 9], function (num) {
    return app(num).then(res => {
        console.log(res)
    });
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题