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

Promises: Passing new Parameters to item in Chain Sequence

我正在使用 q library for promises。我正在尝试将 return 承诺的多个函数按顺序链接在一起,但我想传入新参数。

例如我想做这个伪代码:

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

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

到目前为止,为了处理这个问题,我一直在做类似下面的事情,然后让第一个函数拥有所有参数,并通过解析将它们传递给第二个函数,依此类推。 例如

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

但是,将参数传递给不需要它们的函数以将这些参数传递给确实需要它们的函数似乎很草率。

最好的方法是什么?我想出的每一个选项要么行不通,要么看起来有点令人费解。必须有一个简单的方法来正确地做到这一点。

我不确定我是否理解正确,但如果您想将 default/prespecified 变量添加到 (Promise) 回调中,您可以使用 Function.bind(thisArg[, arg1[, arg2[, ...]]])

例如

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