如何监听和等待节点中的变量变化?

时间:2021-07-02 16:28:13

标签: javascript node.js

我正在尝试监听 node.js 中的变量变化
我试过自己这样做:

async function sleep(timeout){
    await new Promise(r => setTimeout(r,timeout));
}
let update=0;
let variable=1;
    
async function latest_value(){
  while(update!=1){await sleep(500);}
    return variable;
}
    
async function set_var(value){
update=1;
variable=value;
}
    
(async ()=>{
   console.log(await latest_value());
})();

set_var(2);

但这不是即时的,更多的是每 0.5 秒检查一次
那么有人可以告诉我一种有效实现预期结果的方法吗?
也许 proxy 是一条路?

注意
上面的代码只是我需要的一个例子,请不要提出绕过问题的方法

编辑
此外,我不只是在寻找像 this 这样的变量更改,我还需要该函数来等待它

我已经研究过代理和设置器,但据我所知,当值改变时他们调用一个函数,我需要一个等待值改变的函数

This 人有正确的想法,参考第四条评论

1 个答案:

答案 0 :(得分:1)

听起来你只是想在那个 set_var 调用中解决一个承诺:

let set_var;
const latest_value = new Promise(resolve => {
  set_var = resolve;
});
  
(async ()=>{
  console.log(await latest_value);
})();

set_var(2);