1 js引擎是单线程执行js代码,同步任务在栈中按顺序执行,如果某一个同步任务没有执
行完毕,则后面的代码将会处于阻塞等待状态.

2 栈中若执行遇到了异步任务(如定时器、异步Ajax、回调事件),会将此异步任务通过浏览器对应的工作线程来处理。

3 工作线程中的所有异步任务均会按照设定的时间进行等待,时间一到或者达到触发条件则会被加入任务队列。如果是异步ajax,则等待其返回结果后在加入到任务队列

4 当栈中为空时,会通过事件循环来一个个获取任务队列中的任务放到栈中进行逐个运
行。即栈中的同步任务总是在读取 异步任务 之前执行

5 定时器设置的时间不一定按照设定的时间进行执行,这得取决于栈中同步任务耗费的
时间。因为栈中执行的同步任务如果耗费很长时间,则会影响到异步任务回调函数的

JS的运行机制

相关文章:

  • 2022-01-30
  • 2021-04-01
  • 2022-12-23
  • 2021-05-17
  • 2021-06-10
  • 2022-12-23
猜你喜欢
  • 2021-11-30
  • 2021-11-30
  • 2021-11-03
  • 2022-12-23
相关资源
相似解决方案