【发布时间】:2021-01-28 13:14:14
【问题描述】:
假设在 place 2
中有一个代码var place2IsReady = true;
在place 1我需要实现以下逻辑:
Once place2IsReady value was changed (to true) then display alert('ready!');
注意事项:
- place2IsReady 变量在 place 1 的范围内不可用。
- place 1 中的代码在 place 2 执行之前执行(或存在竞争条件)。
解决方案 1
我相信我可以改用 window.place2IsReady 并在位置 1 使用 setTimeout/setInterval 直到我得到window.place2IsReady === true。
还有更好的选择吗?使用监听器?关于变量的变化?
附:我只需要跟踪place2IsReady的第一个可能的变化。
有没有更好的方法?谢谢。
【问题讨论】:
-
你在使用一些框架吗?
-
变量不做任何形式的变化通知。您要么必须不断轮询并检查变量是否已更改,要么实际上使用某些模式或库来跟踪更改。
-
@distante 我更喜欢的答案:不。在某些地方是 JS + TS + jQuery。 Vanilla JS 解决方案更可取。
-
"place2IsReady" 可以是对象而不是布尔值?
-
不确定您到底在寻找什么,但您可以使用javascript.info/property-accessors getter/setter 来执行 setter 调用的相关操作。
标签: javascript typescript scope window