使用map并将对象传递给后续函数调用

时间:2014-03-16 20:53:16

标签: javascript node.js promise bluebird

我有一些像这样的代码:

var downloadFiles = function () {
        console.log('downloading files');
        aFtpClient.
        listAsync().
        then(processListing).
        map(function (object) {
            return processItem(object);
        }).
        then(downloadItem).
        catch (TypeError, function (e) {
            console.dir('arse' + e);
        }).
        catch (Promise.RejectionError, function (e) {
            console.error("unable to read file, because: ", e.message);
        });
        console.log('after downloading files');
    };

processListing返回一个包含source&的对象数组。目的地属性。我使用map来处理数组并调用processItem。有没有办法将映射的对象传递给downloadItem

1 个答案:

答案 0 :(得分:2)

我会去

.map(function (object) {
    return processItem(object).then(function(processResult) {
        return {input: object, result: processResult};
    });
})

现在downloadItem可以访问每个已处理项目的.input.result