将争论传递给承诺。我必须打破链条吗?

时间:2017-03-24 19:52:47

标签: javascript node.js typescript promise

我是nodejs和promises的新手。我需要将参数传递给我的promise链中的回调函数。看起来像下面这样:

var first = function(something) {
/* do something */
return something.toString();
}
var second = function(something, item) {
/* need to work with both the args */
}

我的承诺链看起来像

function(item) {
    /* the contents come from first callback and the item should be passed as an argument to the second callback */
    fs.readFile(somefile).then(first).then(second)
}

我应该将项目作为参数传递,我可以在不破坏链条的情况下执行此操作吗?

如果我完全错了,请纠正我。

由于

2 个答案:

答案 0 :(得分:5)

second函数包装到匿名函数中并以这种方式传递参数:

function(item) {
    /* the contents come from first callback and the item should be passed as an argument to the second callback */
    fs.readFile(somefile)
        .then(first)
        .then(firstResult => second(firstResult, item))
}

答案 1 :(得分:-1)

您可以使用Function.prototype.bind()将项目传递给第二个函数

 fs.readFile(somefile).then(first)
.then(second.bind(null, item))