我想检测服务器上变量值何时更新,并运行回调将新值发送到客户端以提供实时提要。例如,假设服务器以随机间隔生成随机数,但对于客户端来说,重要的是要在新数字发生时立即意识到它的生成。
一个简单的解决方案是定义一个自定义函数来设置值,而不是直接使用“=”进行设置:
function setValue(val) { a = val; websocket.send(a) }
但这需要返回已编写的代码并替换正在更新的该变量的所有实例以改为使用自定义函数。这是一个乏味且容易出错的过程,但只需要做一次。
我读到的另一个解决方案是在初始化变量时定义一个setter,如here所述。 。 这只需要替换第一次初始化变量的所有位置,但由于它隐藏在后台监听,我担心它会降低可读性,并且有人可能会忘记每次更新变量时都会触发回调。
我不专业编码,所以我不确定这些解决方案中哪一个会被更广泛地接受,或者是否有更好的方法我应该接近它。也不确定这会导致性能下降,但我猜可以忽略不计。
最佳答案
定义自定义函数。现在就接受重构的痛苦并保持可读性。编码是 20% 的创造和 80% 的维护,但当你忙于创造新东西时,总是感觉像是 99% 的创造和 1% 的维护。
关于javascript - 检测变量更改并执行回调的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56961858/