eventloop
进程和线程
比如我打开一个页面就是一个进程,比如 自上而下渲染 发请求……
进程是程序,线程是程序中具体做事的人。
例题
代码执行放到栈内存中执行,产生对应的上下文,栈内存和堆内存之外,还会形成2个队列。
promise & async/await
promise.then,已知promise实例的状态,是创建onfullfilled/onreject创建微任务执行。
先放到webapi中监听,监听没问题放到event queue里去排队。主线程空闲去取微任务
自己梳理
js是单线程的。首先整个script也可以理解成一个宏任务,同步代码自上而下依次执行。遇到异步代码就会把异步任务被放到event queue里,分为微任务队列和宏任务队列。同步代码执行完后首先会去查看微任务队列,微任务会优先执行,会先把微任务队列清空;到宏任务队列时,会取出宏任务队列的第1个执行,那如果在执行过程中又产生了微任务,则还是先会把微任务清空再往后走,所以说微任务的优先级是很高的。每次event loop都会先把当前循环中产生的微任务先全部清空,再往后走下一个宏任务。
所以每次eventloop的处理是:一个宏任务和当前循环产生的所有微任务