This article解释说JavaScript事件循环看起来像
while(queue.waitForMessage()){
queue.processNextMessage();
}
我想知道waitForMessage()函数是如何工作的。根据我的理解,JavaScript是非阻塞的,所以它不会像块一样工作而另一个线程唤醒它?那么JavaScript如何知道何时从空状态“取消等待”?
答案 0 :(得分:1)
您引用的文章仅将代码块作为示例提供。这就是结构称为“JavaScript事件循环”概念的结构,但实际上细节通常要复杂得多,并且依赖于JavaScript实现代码的运行时环境。我不是JavaScript运行时内部专家,但我愿意打赌任何实际实现中的代码结构看起来都不像那样。
在Web浏览器中,浏览器的内部“框架”代码可能提供与JavaScript事件处理程序注册模糊相似的注册点。对于像Node.js这样的东西,运行时正在处理操作系统I / O原语(等)。