在Javascript中我试图让一系列函数由Async.series执行。
使用Javascript:
function Field(name, height, width) {
this.name = name;
this.height = height;
this.width = width;
}
Field.prototype.doSomething = function(callback) {
console.log(name, width, height);
// do some stuff with name, height etc. and produce someResults
callback(undefined, someResults
}
问题:
// Dict of Functions
var functions = {};
// Array of Field Objects
fields.forEach( function(field) {
functions[field.name] = field.doSomething;
}
Async.series( functions, callback );
问题是我的所有“类”变量都没有被缓存,因为当我尝试在Async.series中运行函数时我得到异常(名称,宽度和高度没有定义)。
关于如何解决这个问题的任何想法?
答案 0 :(得分:2)
我建议使用bind
:
fields.forEach( function(field) {
functions[field.name] = field.doSomething.bind(field);
}
否则,您this
内的doSomething
值不可能是您想要的。调用bind
在this
时调用field
bind
的值。