Javascript 听js变量的变化
假设在位置2中有一个代码Javascript 听js变量的变化,javascript,typescript,scope,window,Javascript,Typescript,Scope,Window,假设在位置2中有一个代码 var place2IsReady = true; 在位置1中我需要实现以下逻辑: Once place2IsReady value was changed (to true) then display alert('ready!'); 注: place2isrady变量在place 1的范围内不可用 在执行位置2之前执行位置1中的代码(或者存在竞态条件) 解决方案1 我相信我可以改为使用window.place2isrady,并在位置1中使用setTimeou
var place2IsReady = true;
在位置1中我需要实现以下逻辑:
Once place2IsReady value was changed (to true) then display alert('ready!');
注:
- place2isrady变量在place 1的范围内不可用
- 在执行位置2之前执行位置1
window.place2isrady===true
还有更好的选择吗?使用侦听器?关于变量变化
另外,我只需要跟踪第2个位置的第一个可能的变化
有更好的办法吗?谢谢。您可以使用
setTimeout
创建变量更改的侦听器,类似于:
让place2isrady=false;
setReadyListener();
//测试等待2秒钟将place2isrady设置为true
//因此:警报应在2秒后出现
setTimeout(()=>place2isrady=true,2000);
函数setReadyListener(){
常量readyListener=()=>{
如果(位置2重复){
返回警报(“准备就绪!”);
}
返回setTimeout(readyListener,250);
};
readyListener();
}
假设您可以用对象替换place2isrady:
place2IsReady = {
state: false,
set ready(value) {
this.state = value
state && place_1_call()
},
get ready() {
return state
}
}
place_1_call = () => {
alert('ready')
}
place2IsReady.ready = true
您正在使用一些框架吗?变量不会对更改发出任何形式的通知。您必须不断轮询并检查变量是否已更改,或者实际使用某种模式或库来跟踪更改。@远离我的首选答案:否。在某些地方使用JS+TS+jQuery。香草JS解决方案更可取。“place2IsReady”可以是一个对象而不是布尔值?不确定您到底在寻找什么,但您可以使用getter/setter在执行setter调用时执行依赖操作。谢谢。请您解释一下为什么place2isrady=true;place2isrady=false;place2isrady=true;没有显示第二个警报?我可以,如果我明白你的意思meant@Kooilnc,收到了,谢谢,只执行了一次。