1、后台语言中的异步:同时开辟多个线程,每个线程同时做多个事情
js中的异步是不一样的异步,不管如何只能做一件事情,基于Event Loop/Event Queue机制,把一些方法延后执行(除发送ajax请求外,因为此时浏览器分配一个线程继续执行JS,分配另一个线程去发送HTTP事务)
2、浏览器分配一个线程,让代码在栈内存中自上而下的执行,首先执行主程序,期间会有定时器等异步执行事件,这时候浏览器会把不立即执行的方法进行存储,加入到事件队列中,方便后期找到执行
3、主程序一旦闲下来 收件到事件队列中的微任务中查找,是否需要执行的程序 ,但是只要主线程没有闲下来,不论队列中的方法是否达到执行条件,也不能执行
4、如果堆任务中没有找到需要执行的方法则去宏任务中继续寻找 ,定时器是宏任务,找到任务之后那到执行环境栈中,让主线程去执行(这时候主线程又忙碌起来了)
这套机被称为事件循环机制Event Loop
网友评论