一直有个疑惑,监听事件的原理咋实现的,例如不用导网上的模块包,自己写一个监听的项目或者模块包,监听某个值变化了,例如某个数据是否存在变化。
我只能想到While循环,一直扫描触发的时间,当然定时器更好。但定时器的实质还是循环呀。
所以监听值的变化一般咋实现呀,while
?感觉死循环总感觉资很容易挂。但是我接触过底层单片机也是用 while
实现的,还有PLC,主程序(main)都是一个无限扫描程序。
while
,死循环,但感觉对系统不太好(while
内只要有一个小小的 bug 就很致命,我有过几次电脑崩溃重启了)。
一般这种都需要用到具体编程语言开放的
元编程
的能力,从底层去劫持对数据的访问,比如在 js 中的Proxy
和Object.defineProperty
通过上层对已有数据结构做封装也是可行的路径,但需要引入一些概念和约束,会提高使用者的学习成本,比如通过
发布订阅
模式封装一种数据结构