当消息队列变空时,JavaScript如何得到通知 - >非空?

时间:2016-11-23 22:47:18

标签: javascript concurrency

This article解释说JavaScript事件循环看起来像

while(queue.waitForMessage()){
  queue.processNextMessage();
}

我想知道waitForMessage()函数是如何工作的。根据我的理解,JavaScript是非阻塞的,所以它不会像块一样工作而另一个线程唤醒它?那么JavaScript如何知道何时从空状态“取消等待”?

1 个答案:

答案 0 :(得分:1)

您引用的文章仅将代码块作为示例提供。这就是结构称为“JavaScript事件循环”概念的结构,但实际上细节通常要复杂得多,并且依赖于JavaScript实现代码的运行时环境。我不是JavaScript运行时内部专家,但我愿意打赌任何实际实现中的代码结构看起来都不像那样。

在Web浏览器中,浏览器的内部“框架”代码可能提供与JavaScript事件处理程序注册模糊相似的注册点。对于像Node.js这样的东西,运行时正在处理操作系统I / O原语(等)。