私のプロジェクトの中で非同期ライブラリを使用しています。私は奇妙な動作に陥ります。例えばasync.series内でasync.applyを使用した未定義引数
(これは私の実際のコードではありませんが、動作は同じであり、このように私の問題を公開する方が簡単です):私の機能「doSomethingWithTheTokenは」トークンが渡され、呼び出された
var token;
async.series([
function getToken (done) {
api.getToken(userId, function (err, data) {
if (err) return done(err);
token = data;
return done();
}
},
async.apply(doSomethingWithTheToken, token)
], callback);
以前の関数 "getToken"で引数を変更したとしても、引数は "未定義"の値を持ちます。
しかし、私がしなければ:
var token;
async.series([
function getToken (done) {
api.getToken(userId, function (err, data) {
if (err) return done(err);
token = data;
return done();
}
},
function doSomething (done) {
doSomethingWithTheToken(token, done);
}
], callback);
はその後、私のトークンが関数に渡された問題は、「doSomethingWithTheTokenは、」前の関数によって与えられた正しい値を持っていません。
私はこの記事を書く前にasyncモジュールで少しの研究をしましたが、async.apply関数に渡された引数を表示すると、async.seriesフローで関数呼び出しが行われる前に表示されていました - 私のトークンの値が「未定義」である理由を説明します。
誰も私にこの現象が起こっている理由を説明することはできますか?
が、私はそれが配列で入手トークンを追加し、私は私の問題を事前
おかげで、私は今理解し、それは私が単に流れところのこの種の内の「async.apply」を使用する方法を持っていないことを意味しますarguの値実行時に変更される可能性がありますか? – Orodan