javascript - 如何监听和等待节点中的变量变化?
问题描述
我正在尝试监听 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条评论供参考
解决方案
听起来您只想解决该set_var
调用中的承诺:
let set_var;
const latest_value = new Promise(resolve => {
set_var = resolve;
});
(async ()=>{
console.log(await latest_value);
})();
set_var(2);
推荐阅读
- javascript - JavaScript 在函数中计算表达式而不返回
- javascript - 在运行 iOS 和 MacOS(苹果)操作系统的设备上发布解析日期
- java - 如何使用优雅按钮库增加或减少购物车适配器中的项目数量?
- html - 打印角度组件时如何避免在具有大内容的div内分页
- asp.net-core - Jfrog Visual Studio Code 不扫描库
- c++ - Qt Creator 似乎很难用 googletest 解析 Valgrind memcheck 输出
- visual-studio - 为什么 Visual Studio 中的智能感知不再显示方法重载?
- three.js - 使用来自两个向量的三个.js 四元数创建面的类出错
- docker - 码头工人 | 在 Python 3.8 上安装 lxml 的问题
- java - Java Swing`GridBagLayout`对齐问题