为了账号安全,请及时绑定邮箱和手机立即绑定

promise函数队列执行问题

promise函数队列执行问题

慕勒3428872 2019-03-14 14:11:45
//Promise封装的函数function app(num,data){ }如果想调用成功后再次去执行自身var data=[...]//执行次数为data.length=3app(0).then(function(res){    console.log(res)    return app(1)}).then(function(res){     console.log(res)    return app(2)});执行次数如果不确定该怎么去实现,上面执行了3次,返回的data数据长度不确定。
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

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)

  })

}


查看完整回答
反对 回复 2019-04-01
?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果你每次执行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)

})


查看完整回答
反对 回复 2019-04-01
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

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)

    });

})


查看完整回答
反对 回复 2019-04-01
  • 3 回答
  • 0 关注
  • 552 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信