Promise.each没有蓝鸟

时间:2017-01-12 07:56:09

标签: javascript promise bluebird

我需要在 bluebird 上使用Promise.each。但是当我看到捆绑文件时,我实际上是在考虑使用 bluebird 而不是。

任何人都可以使用像 bluebird Promise.each这样没有依赖关系的函数给我一个例子。

2 个答案:

答案 0 :(得分:19)

不确定

Promise.each = function(arr, fn) { // take an array and a function
  // invalid input
  if(!Array.isArray(arr)) return Promise.reject(new Error("Non array passed to each"));
  // empty case
  if(arr.length === 0) return Promise.resolve(); 
  return arr.reduce(function(prev, cur) { 
    return prev.then(() => fn(cur))
  }, Promise.resolve());
}

或使用现代JS(Chrome或Edge或使用转换器):

Promise.each = async function(arr, fn) { // take an array and a function
   for(const item of arr) await fn(item);
}

答案 1 :(得分:-2)

如果我们查看MDN上的Promise文档,您会发现我们可以使用两种方法。 allrace,前者在所有承诺得到解决时完成,后者在第一个承诺结算时完成。

这应该为您提供了使用蓝鸟Promise.each完成所有操作的工具。如果它还没有解决您的问题,请说明您的具体问题,我会看看我是否可以帮助您。