Javascript工作对象未正确设置标志

Javascript工作对象未正确设置标志,javascript,Javascript,我已经创建了一个执行操作的worker对象。为了防止它同时执行两个操作,有一个就绪标志,指示一个操作已完成,并且worker已准备好进行下一个操作。。。如下面的代码所示 var worker = { readyFlag:1, ready: function(){ console.log('ready'); this.readyFlag = 1; }, working: function(){ console.l

我已经创建了一个执行操作的worker对象。为了防止它同时执行两个操作,有一个就绪标志,指示一个操作已完成,并且worker已准备好进行下一个操作。。。如下面的代码所示

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