In javascript, how to trigger event when a variable's value is changed?

javascript

Solution

There is no event which is raised when a given value is changed in Javascript. What you can do is provide a set of functions that wrap the specific values and generate events when they are called to modify the values.

function Create(callback) {
  var isGreen = false;
  var isRunning = false;
  return { 
    getIsGreen   : function()  { return isGreen; },
    setIsGreen   : function(p) { isGreen = p; callback(isGreen, isRunning); },
    getIsRunning : function()  { return isRunning; },
    setIsRunning : function(p) { isRunning = p; callback(isGreen, isRunning); }
  };
}

Now you could call this function and link the callback to execute go():

var traffic = Create(function(isGreen, isRunning) {
  if (isGreen && !isRunning) {
    go();
  }
});

traffic.setIsGreen(true);

Problem

I have two variables: ``` var trafficLightIsGreen = false; var someoneIsRunningTheLight = false; ``` I would like to trigger an event when the two variables agree with my conditions: ``` if(trafficLightIsGreen && !someoneIsRunningTheLight){ go(); } ``` Assuming that those two booleans can change in any moment, how can I trigger my `go()` method when they change according to the my conditions?

Original source

Related problems