【发布时间】:2020-08-01 23:31:38
【问题描述】:
我通过 CDN 脚本标签使用 EventEmitter。我试图在 HTML 脚本标签中包含的外部脚本和本地脚本之间发出。从外部脚本发射工作正常。但是从 HTML 文档的 script 标签中不会发出。
我错过了什么?
HTML 文档:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/EventEmitter/5.2.8/EventEmitter.min.js"></script>
<script src="emitter.js"></script>
</head>
<body></body>
<script>
e.on("fromJSFile", function(msg){
console.log("Received message from external script: " + msg)
})
e.emit("fromHTMLScript", "Emitted from HTML script")
</script>
</html>
外部脚本(emitter.js):
let e = new EventEmitter()
e.emit("fromJSFile", "Emitted from external script")
e.on("fromHTMLScript", function(msg){
console.log("Recieved message from HTML script: " + msg)
})
【问题讨论】:
-
在添加所有处理程序之前,您不应尝试
emit。虽然我认为发出事件应该发生在当前调用堆栈之外,但我不确定他们是如何在浏览器中实现setImmediate()(等)的。可能存在一些实现怪癖。