這裏的另一種採取在相同的功能:spex.batch
的source code將太多在這裏重新發布,所以這裏只是從如何使用它batch processing一個例子:
var spex = require('spex')(Promise);
// function that returns a promise;
function getWord() {
return Promise.resolve("World");
}
// function that returns a value;
function getExcl() {
return '!';
}
// function that returns another function;
function nested() {
return getExcl;
}
var values = [
123,
"Hello",
getWord,
Promise.resolve(nested)
];
spex.batch(values)
.then(function (data) {
console.log("DATA:", data);
}, function (reason) {
console.log("REASON:", reason);
});
個
此輸出:
DATA: [ 123, 'Hello', 'World', '!' ]
現在,讓我們把它通過改變getWord
這個失敗:
function getWord() {
return Promise.reject("World");
}
現在輸出的是:
REASON: [ { success: true, result: 123 },
{ success: true, result: 'Hello' },
{ success: false, result: 'World' },
{ success: true, result: '!' } ]
即整個陣列結算,報告指數結果。
,如果不是報告我們稱之爲getErrors()
整個推理和:
console.log("REASON:", reason.getErrors());
那麼輸出將是:
REASON: [ 'World' ]
這僅僅是爲了簡化快速訪問發生的錯誤列表。
不錯,雖然現在我會堅持使用Q(這可能是相同的)。 – Zlatko
關於你的第4步,我將如何以往任何時候都知道要拒絕新的承諾? –
@torazaburo你是對的,你永遠不會拒絕,這是allSettled點:) 也許有些超時,但是這是一個不同的使用情況,而不是反映q.allSettled做什麼。 – Zlatko