从async.series调用的原型函数中使用“this”
我想通过使用“this”来访问一个variables,但是由于我的函数被async.series
调用, async.series
上下文发生了变化。 这是我的代码示例:)
var search = function(url) { this.music = url; } search.prototype.test = function() { async.series({ songId: this.getSongId }, function(err, results) {}); }; search.prototype.getSongId = function(callback) { console.log(this.music) // Prints 'undefined' } module.exports = search;
当我在做
var engine = require('./lib/index.js'); var search = new engine('test'); search.test();
我得到“未定义”。 有没有办法将“这个”绑定到async.series函数,或者我应该只是将我的值作为parameter passing?
正如@Pointy指出的,.bind()实际上是正确的方法。 经过这里的一些研究是我如何解决我的问题。
search.prototype.test = function() { async.series({ songId: this.getSongId.bind(this) //binding "this" here! }, function(err, results) {}); };
谢谢 :)