我正在使用 Node.JS 并有两个对象,我通过回调在它们之间移动。我想出了一个解决方案来维护对正确对象的范围引用。我想弄清楚是否有更好的方法来执行此操作,或者这是否是一种好的做法。
function Worker () {}
Worker.prototype.receiveJob = function(callback, bossReference) {
this.doJob(callback, bossReference);
};
Worker.prototype.doJob = function(callback, bossReference) {
callback.call(bossReference);
// callback(); // this will not work
};
function Boss () {
this.worker = new Worker();
}
Boss.prototype.delegateJob = function() {
this.worker.receiveJob(this.whenJobCompleted, this);
};
Boss.prototype.whenJobCompleted = function() {
this.sayGoodJob();
};
Boss.prototype.sayGoodJob = function() {
console.log('Good job');
};
var boss = new Boss();
boss.delegateJob();
最佳答案
使用Function.prototype.bind()
function Worker () {}
Worker.prototype.receiveJob = function(callback) {
this.doJob(callback);
};
Worker.prototype.doJob = function(callback) {
callback()
};
function Boss () {
this.worker = new Worker();
}
Boss.prototype.delegateJob = function() {
this.worker.receiveJob(this.whenJobCompleted.bind(this));
};
Boss.prototype.whenJobCompleted = function() {
this.sayGoodJob();
};
Boss.prototype.sayGoodJob = function() {
console.log('Good job');
};
var boss = new Boss();
boss.delegateJob();
之后你不需要那些愚蠢的bossReference
,除非你在你的函数中需要它
关于javascript - Node.js - 在回调之间管理 javascript 范围的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15513382/