将参数传递给返回链

时间:2016-06-24 23:14:22

标签: javascript node.js promise

我有许多期望参数和返回承诺的函数,不知道如何将各个参数传递给链中的每个参数。

fs.readFile('./img/thumbnail.png', function(error, data) {
    module.create(body)
        .then(module.uploadImage) //expects collection.uploadImage(data);
        .then(module.requestInfo)
});

如何将承诺通过data传递给module.uploadImage作为参数?

2 个答案:

答案 0 :(得分:1)

如果在您输入功能时已知数据,则可以使用.bind()

fs.readFile('./img/thumbnail.png', function(error, data) {
    module.create(body)
        .then(module.uploadImage.bind(module, data))
        .then(module.requestInfo)
});

有关详细信息,请参阅description of .bind() on MDN

当然,你可以随时创建自己的包装函数,让你传递任何你想要的东西,包括计算参数:

fs.readFile('./img/thumbnail.png', function(error, data) {
    module.create(body).then(function() {
        return module.uploadImage(data);
    }).then(module.requestInfo)
});

P.S。请不要忽略fs.readFile()回调的错误检查。

答案 1 :(得分:0)

使用匿名函数:

fs.readFile('./img/thumbnail.png', function(error, data) {
module.create(body)
    .then(function(){ module.uploadImage(data); }) //expects collection.uploadImage(data);
    .then(module.requestInfo)
});