我有两个变量:
var trafficLightIsGreen = false;
var someoneIsRunningTheLight = false;
Run Code Online (Sandbox Code Playgroud)
当两个变量符合我的条件时,我想触发一个事件:
if(trafficLightIsGreen && !someoneIsRunningTheLight){
go();
}
Run Code Online (Sandbox Code Playgroud)
假设这两个布尔值在任何时刻都可以改变,那么go()当他们根据我的条件改变时如何触发我的方法呢?
Jar*_*Par 31
在Javascript中更改给定值时,不会引发任何事件.您可以做的是提供一组函数,这些函数包含特定值并在调用它们时生成事件以修改值.
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); }
};
}
Run Code Online (Sandbox Code Playgroud)
现在你可以调用这个函数并链接回调来执行go():
var traffic = Create(function(isGreen, isRunning) {
if (isGreen && !isRunning) {
go();
}
});
traffic.setIsGreen(true);
Run Code Online (Sandbox Code Playgroud)