首页 > 解决方案 > 如何监听和等待节点中的变量变化?

问题描述

我正在尝试监听 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 秒检查一次,
所以有人可以告诉我一种有效实现预期结果的方法吗?
也许代理是一种方法?

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

编辑
另外我不只是在寻找这样的变量变化我也需要函数来等待它

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

人思路正确,看第4条评论供参考

标签: javascriptnode.js

解决方案


听起来您只想解决该set_var调用中的承诺:

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

set_var(2);

推荐阅读