Вот что я не понимаю в .each()
. Функция возвращает обещание, которое возвращает исходный массив вместо массива результатов обратного вызова. Как тогда получить результаты? .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);
}
}
});