JS的事件循环机制

1.为什么js是单线程的? 作为运行在浏览器的脚本语言,主要用途之一是操作DOM,如果有两个线程同时对一个DOM进行操作的话,则浏览器不知道该听谁的

2.主线程:规定现在执行执行栈中的哪个事件

主线程循环:即主线程会不停的在执行栈中读取事件,会执行完栈中的所有同步代码,当遇到一个异步事件后,并不会一直等待异步事件返回结果,而是会将这个事件挂在与执行栈不同的队列中,我们称之为任务队列。 主线程将执行栈中的所有代码执行完后,主线程将会去查看任务队列是否有任务,如果有那么zhu'主线程会依次执行那些执行任务队列中的回调函数。

3.js异步执行的机制:suo'所有任务都在主线程上执行,形成一个执行栈;主线程之外还存在一个任务队列,只要异步任务有了结果,就会在任务队列中形成一个事件;一旦执行栈中所有的tong同步任务执行完成,系统则会读取任务队列,则对应的异步任务结束等待状态,进入执行栈开始执行。

4.异步任务分为宏任务和微任务;

    所谓的单线程并不孤单,它的背后有浏览器的其他线程为其服务,其yi异步也靠其他线程来监听事件的响应,并将回调函数推入到任务队列中等待执行。

猜你喜欢

转载自blog.csdn.net/qq_25461519/article/details/81017176