web-dev-qa-db-ja.com

ブルーバードなしのPromise.each

bluebirdPromise.eachを使用する必要があります。しかし、バンドルファイルを見ると、実際にはbluebirdを使用するかどうかを2度考えています。

bluebirdPromise.eachのような関数を依存関係なしで使用した例を誰かに教えてもらえますか。

11
Rohman Masyhar

承知しました:

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);
}
21