2015-11-11 3 views
0

У меня есть функция, которая promise.each итератора массива обр и вызовите функцию тестирования следующим образом:Promise каждый с возвращаемым значением

var promise = require("bluebird"); 
var arr = [1,2,3]; 

function test(item) { 
    return promise.resolve('change..'); 
} 

return promise.each(arr, function(item) { 
    return test(item); 
}) 
.then(function(result) { 
    console.log(result); 
}); 

результат будет [1,2,3]. Есть ли способ изменить результат на [change .., change .., change ..]?

спасибо.

+0

Зачем требовать ** bluebird **? Node.js по умолчанию поддерживает обещания. –

+1

@EvanPlaice: Например, поскольку нативные обещания не имеют методов 'each' или' map' :-) – Bergi

+0

@ Bergi Действительно? http://promise-nuggets.github.io/articles/14-map-in-parallel.html –

ответ

1

Вы ищете Promise.map. Или если вы хотите обеспечить последовательное выполнение, Promise.mapSeries (начиная с версии 3.0.1).

+0

Спасибо большое! Это действительно помогает. –

Смежные вопросы