以下是相同功能的另一个版本: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' ]
这只是为了简化对已发生错误列表的快速访问。