这里的另一种采取在相同的功能: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