我需要使用Promise.each
on bluebird。但是當我看到捆綁文件時,我實際上正在考慮使用藍鳥或不使用。Promise.each without bluebird
任何人都可以給我一個例子使用像藍鳥Promise.each
功能沒有依賴關係。
我需要使用Promise.each
on bluebird。但是當我看到捆綁文件時,我實際上正在考慮使用藍鳥或不使用。Promise.each without bluebird
任何人都可以給我一個例子使用像藍鳥Promise.each
功能沒有依賴關係。
肯定的:
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或邊或有一個transpiler):
Promise.each = async function(arr, fn) { // take an array and a function
for(const item of arr) await fn(item);
}
感謝它的作品。 –
請注意,'empty case'永遠不會在這裏測試,因爲0是虛假的,所以'!arr.length'將導致空數組作爲非數組被拒絕而不是被解析。 使用'!(arr instanceof Array)'更好。 – Findiglay
'空檢查'是不必要的,因爲如果數組爲空,Array.prototype.reduce()將返回'initialValue'('Promise.resolve()')。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce – pickypg
FTR - 藍鳥有局部和定製構建 - 你可以得到它低至5KB –
我該怎麼做?試圖導入'require(bluebird/each)'不工作 –