2017-06-29 11 views
0

私はq library for promisesを使用しています。約束を一緒に返す複数の関数を連鎖しようとしていますが、新しいパラメータを渡したいと思います。約束:新しいパラメータをチェーンシーケンスのアイテムに渡す

これを処理するために、これまでのところ

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); 

しかし、これは、それらを必要ない機能にそれらのパラメータを得るためにそれらを必要としない関数にパラメータを渡すためにずさんなようです。

これを行うにはどのような方法が最適ですか?私が思いつく全ての選択肢は、うまくいかないか、夢中になっているようです。適切にこれを行う簡単な方法があります。

+0

各機能の定義を表示できますか?これを行うための「最良の」方法は、実際にパラメータを使って何をしようとしているかによって異なります。 –

+0

最初の方法は何が問題なのですか? –

答えて

1

私はこれを正しく理解すればわからないんだけど、あなたは(約束)コールバックにデフォルト/事前に指定された変数を追加したい場合は、例えばFunction.bind(thisArg[, arg1[, arg2[, ...]]])

を使用することができます

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

これは私が考えていたものでした。私は、文脈を指示することなく引数をバインドする標準的な方法があったと思う。 –

+0

これは有望そうです;-)。私は今、それをテストしています、ありがとう! – Doug

+0

ありがとうございました!これは美しく動作し、まさに私が探していたものです。これにより、すべてが簡単になります。必要に応じて最後の連鎖約束の結果を引き出すこともできるようです(最後のパラメータにロードされています)。 – Doug

関連する問題