Javascript工作对象未正确设置标志
我已经创建了一个执行操作的worker对象。为了防止它同时执行两个操作,有一个就绪标志,指示一个操作已完成,并且worker已准备好进行下一个操作。。。如下面的代码所示Javascript工作对象未正确设置标志,javascript,Javascript,我已经创建了一个执行操作的worker对象。为了防止它同时执行两个操作,有一个就绪标志,指示一个操作已完成,并且worker已准备好进行下一个操作。。。如下面的代码所示 var worker = { readyFlag:1, ready: function(){ console.log('ready'); this.readyFlag = 1; }, working: function(){ console.l
var worker = {
readyFlag:1,
ready: function(){
console.log('ready');
this.readyFlag = 1;
},
working: function(){
console.log('working');
this.readyFlag = 0;
},
work: function () {
console.log(this.readyFlag);
if(this.readyFlag == 1){
this.working();
doTheWork(this.ready);
}
},
};
function doTheWork(callback){
// do the work
console.log('I am executing some work');
callback();
}
worker.work();
worker.work();
问题是,它第一次运行时是ok,它将标志设置回ready。。但出于某种原因,它会将标志设置回工作状态,即使未调用.working()函数,并且console.log不会显示它再次工作
请注意,调用worker.work()两次,但在第二次调用时,它不会执行,因为该标志被设置为0,即使回调函数应该将其设置为1。发生什么事了
使用此代码而不是您的代码,因为当调用
ready
方法时,它会在全局上下文(而不是对象本身)中执行,并将readyFlag
属性设置为全局对象
work: function () {
console.log(this.readyFlag);
if(this.readyFlag == 1){
this.working();
doTheWork(this.ready.bind(this);
}
},
我不会将
readyFlag
设置为1
或0
,而是使用true
和false
。