đây là một mất tại cùng một chức năng: spex.batch
các source code sẽ là quá nhiều để lại bài ở đây, vì vậy đây là chỉ là một ví dụ từ batch processing làm thế nào để sử dụng nó:
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);
});
này kết quả đầu ra:
DATA: [ 123, 'Hello', 'World', '!' ]
Bây giờ chúng ta hãy làm cho nó thất bại bằng cách thay đổi getWord
này:
function getWord() {
return Promise.reject("World");
}
Bây giờ đầu ra là:
REASON: [ { success: true, result: 123 },
{ success: true, result: 'Hello' },
{ success: false, result: 'World' },
{ success: true, result: '!' } ]
tức là toàn bộ mảng được giải quyết, báo cáo kết quả chỉ mục.
Và nếu thay vì báo cáo toàn bộ lý do chúng ta gọi là getErrors()
:
console.log("REASON:", reason.getErrors());
thì đầu ra sẽ là:
REASON: [ 'World' ]
Đây chỉ là để đơn giản hóa truy cập nhanh vào danh sách các lỗi xảy ra .
Tốt, mặc dù hiện tại tôi sẽ sử dụng Q (có thể làm tương tự). – Zlatko
Đối với bước 4 của bạn, làm thế nào tôi có thể biết để từ chối lời hứa mới? –
@torazaburo bạn nói đúng, bạn sẽ không bao giờ từ chối, đó là điểm của allSettled :) Có thể một số thời gian chờ, nhưng đó là một trường hợp sử dụng khác nhau và không phản ánh những gì q.allSettled nào. – Zlatko