当JS引擎中执行栈的代码执行完以后,是如何通过event loop去获取事件队列的的任务的?
是JS引擎
主动去事件队列获取?还是event loop将任务压到执行栈,event loop怎么知道栈的代码已经执行完了?
当JS引擎中执行栈的代码执行完以后,是如何通过event loop去获取事件队列的的任务的?
是JS引擎
主动去事件队列获取?还是event loop将任务压到执行栈,event loop怎么知道栈的代码已经执行完了?
JS引擎用于解释和执行JS代码,主要包括调用栈和内存堆,Event loop从事件队列中取出Message,每一个Message都关联一个函数,这个函数会被推送到JS引擎的调用栈中执行。Event loop是独立于JS引擎的,它负责循环事件队列并发送回调函数给JS引擎。Event loop和JS引擎可以通信,比如通过宿主环境,所以Event loop可以知道调用栈中的函数是否执行完成(具体通信方式没有研究过)
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
javascript引擎的只是一个按需执行 JavaScript 任意代码片段的环境。
javascript引擎是运行在宿主环境中的(比如浏览器),提供事件循环机制的,不是javascript引擎,而是宿主环境。
换句话说,宿主环境提供了一种机制来处理程序中多个块的执行,在执行每个程序块的时候,调用javascript引擎,因此事件的调度也是有宿主环境进行的。