JavaScript 承诺每个

示例

可以有效地应用一个函数(cb),该函数向数组的每个元素返回一个承诺,每个元素等待处理,直到前一个元素被处理为止。

function promiseForEach(arr, cb) {
  var i = 0;

  var nextPromise = function () {
    if (i >= arr.length) {
      // 处理完成。
      return;
    }

    //处理下一个功能。包装在Promise.resolve中以防万一
    // 该函数不返回承诺
    var newPromise = Promise.resolve(cb(arr[i], i));
    i++;
    // 连锁完成加工。
    return newPromise.then(nextPromise);
  };

  // 揭开序幕。
  return Promise.resolve().then(nextPromise);
};

如果您需要一次高效地处理数千个项目,这将很有帮助。使用常规for循环创建承诺将立即创建所有承诺并占用大量RAM。