【发布时间】:2015-07-01 08:35:17
【问题描述】:
这是我对.each() 的不理解之处。该函数返回一个promise,它产生原始数组,而不是回调的结果数组。那你怎么得到结果呢? .map() 不是我想要的,因为元素需要按顺序处理。
var input = [1, 2, 3];
return promise.each(input, causeSideEffect).then(function() {
/* return true if any side effect occurred */
});
在示例中,causeSideEffect() 返回一个布尔值的承诺,表明它是否做了任何事情。
编辑:产生 3.0 版行为的垫片
var promise = require('bluebird');
var testInput = [ 1 ];
promise.each(testInput, function(){}).then(function(results) {
if (results[0] === 1) {
var originalFunction = promise.each;
promise.each = function(array, callback) {
var results = [];
var closure = function(item, index, length) {
return promise.resolve(callback(item, index, length)).then(results.push.bind(results));
};
return originalFunction(array, closure).return(results);
}
}
});
【问题讨论】: