すばらしいasync モジュールを使用して、NodeJS 用の素敵な Javascript コードを書きたいと思います。値の配列があり、各値に対して特定の関数を呼び出して、結果を配列に蓄積したいと考えています。これには async.map を使用します。残念ながら、呼び出そうとする関数が自分のクラスのプロトタイプ関数である場合、変数値の読み取りに失敗します。
例 これは私が定義したテスト「クラス」です。
var async = require('async');
function ClassA() {
this.someVar = 367;
};
ClassA.prototype.test1 = function(param, callback) {
console.log('[' + param + ']The value in test is: ' + this.someVar);
callback(null, param + this.someVar);
};
ClassA.prototype.test2 = function() {
var self = this;
async.map([1,3,4,5], (self.test1), function(err, result){
if (err) {
console.log('there was an error')
} else {
console.log('Result is: ' + result)
}
})
};
module.exports = new ClassA();
そして、これが私がそれを使用する方法です
testclass.test1(1, function(err, data){});
testclass.test2();
それが出力です:
[1]The value in test is: 367
[1]The value in test is: undefined
[3]The value in test is: undefined
[4]The value in test is: undefined
[5]The value in test is: undefined
Result is: NaN,NaN,NaN,NaN
test2
得られた出力を見るとわかるように、変数async.map
にアクセスできません。this.someVar
質問 ここで間違いなく何かが欠けています。誰かが私にエラーを指摘して、それが機能しない理由を説明できますか? 未定義の代わりに 367 が表示されると思います。問題はこの SO questionに関連していると思いますが、ユースケースの解決策が見つからないようです。
読んでくれてありがとう。質問が長くなってすみません!