ウォーターフォールの最初の関数に引数を渡すことはできないようです。
いくつかの変数を取得するために最初のものが本当に必要なので、これは他の方法で行うことができますか?
必要な変数を使用して関数を呼び出すダミー関数を定義します。 このような:
async.waterfall([
function(cb)
{
cb(null, username, password);
},
Authenticate,...
グレートハック=)
別の方法は、async.apply(authenticate、username、password)を使用して引数を事前にバインドすることです。
async.waterfall([
async.apply(func1, "1")
], function (err, result) {
});
function func1(par1, callback) {
console.log(par1); // Outputs: 1
}
@adisosありがとう! +1
うーん...素晴らしいハック、本当に...私も最初のウォーターフォール関数にパラメーターを渡すことができないことに戸惑いました...しかし、これはバグ/矛盾としてモジュールの作者(caolan)に投稿するべきではありませんか? これらのハックで、そのメソッドのすべてのすっきりが消えます...:-/
これは、これらのメソッドの使用目的です。 async.applyは、主にこのユースケースAFAIKのために追加されました
ドキュメントには、関数でウォーターフォールを使用する例が示されていますが、誰かがreadmeを修正して、applyでウォーターフォールを使用することを示したい場合は素晴らしいでしょう
:+1: @adisosの適用は素晴らしいです! 私はこのライブラリをほんの少ししか使用しておらず、絶えず感銘を受けています。
それでもこの問題が発生する場合は、定数関数が非常にうまく機能します。
async.waterfall([
async.constant(42),
function (value, next) {
// value === 42
},
], callback);
詳細については、 http://caolan.github.io/async/docs.html#.constantをご覧
最も参考になるコメント