【发布时间】:2017-12-30 10:33:01
【问题描述】:
我读过一些关于 JavaScript 中的观察者设计模式的文章,但我不明白:因为 JS 有事件,在我看来这没什么用。我错过了什么吗?
【问题讨论】:
-
观察者模式是一种在事件系统之上的模式。它允许更容易地构造复杂的代码
-
浏览器的DOM Api或其他库/api提供事件,但JavaScript规范中没有事件。这些库自己实现事件系统或使用环境提供的事件系统。
-
DOM api 实际上不是观察者模式吗?
someel.addEventListener("click",handler)? -
从技术上讲,事件是观察者模式的可能实现之一。其他实现也是可能的(采用 RxJS 或节点的 EventEmitter)。
-
通过代理的观察者不是事件,developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 代码保持阻塞并且当前执行停止,直到陷阱执行然后继续。执行上下文保留在调用堆栈上。
标签: javascript observer-pattern