承诺:将新参数传递给链序列中的项

时间:2017-06-29 19:33:04

标签: javascript promise q

我正在使用q library for promises。我试图链接多个函数,这些函数在一个序列中一起返回promises,但我想传递新的参数。

e.g。我想做这个伪代码:

var func1Param = 'abc';
var func2Param = 'def';
var func3Param = 'ghi';

func1(func1Param).then(func2(func2Param)).then(func3(func3Param));

到目前为止,为了解决这个问题,我已经做了类似下面的事情,然后让第一个函数拥有所有参数,然后将它们传递给第二个具有解析功能的函数,依此类推。 e.g。

var parms = { func1 : 'abc', func2: 'def', func3: 'ghi' }
func1(params).then(func2).then(func3);

然而,将参数传递给不需要它们将这些参数传递给需要它们的函数的函数似乎很草率。

最好的方法是什么?我提出的每一个选项要么不起作用,要么似乎有点疯狂。必须有一种简单的方法来正确地做到这一点。

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解这一点,但如果您想将默认/预先指定的变量添加到(Promise)回调,您可以使用Function.bind(thisArg[, arg1[, arg2[, ...]]])

E.g。

function1(foo)
    .then(function2.bind(this, bar)
    .then(function3.bind(this, baz)