鍍金池/ 問答/HTML/ promise函數(shù)隊列執(zhí)行問題

promise函數(shù)隊列執(zhí)行問題

//Promise封裝的函數(shù)
function app(num,data){
 
}

如果想調(diào)用成功后再次去執(zhí)行自身

var data=[...]
//執(zhí)行次數(shù)為data.length=3
app(0)
.then(function(res){
    console.log(res)
    return app(1)
})
.then(function(res){
     console.log(res)
    return app(2)
});

執(zhí)行次數(shù)如果不確定該怎么去實現(xiàn),上面執(zhí)行了3次,返回的data數(shù)據(jù)長度不確定。

回答
編輯回答
小眼睛

如果你每次執(zhí)行app()互相沒有聯(lián)系 可以放在一個數(shù)組里 用Promise.all來執(zhí)行

let p =[]
for(let i=0;i<data.length;i++){
  p.push(app(i,data))
}
Promise.all(p).then(res=>{
  console.log(res)
})
2017年7月19日 03:15
編輯回答
尛曖昧
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)
  })
}

2017年1月15日 22:28
編輯回答
夏夕
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)
    });
})
2018年3月4日 04:24