如何使用 promises 做无重复代码的系列

How to use promises to do series without duplicate code

我需要串联执行一段代码,我需要执行同一个函数N次

示例

// execute asynFunc 4 times in series
object.asynFunc()
  .then(function() {
    return object.asynFunc();
  })
  .then(function() {
    return object.asynFunc();
  })
  .then(function() {
    return object.asynFunc();
  })

我想执行同一个函数 100 次

var count = 0;    
if(count<=100){
  object.asynFunc()
   .then(function() {
     count++;
     return object.asynFunc();
   })

此代码将执行函数 100 次

只需使用一个循环。

var lastPromise = Promise.resolve();
for (var x = 0; x < 100; x++) {
    lastPromise = lastPromise.then(function () {
        return object.asyncFunc();
    });
}

您也可以在长度为 100 的数组上使用 Promise.reduce 来达到同样的效果。

Promise.reduce(new Array(100), function () {
    return object.asyncFunc();
});