目录
tips
- js是单线程,异步是用同步方法模拟实现的。
- event loop 是js的执行机制
任务
|````宏任务:整体代码script、setTimeout、setInterval、 I/O 操作、UI 渲染等
任务-|
|__微任务: Promise.then、process.nextTick、catch、finally
一个event loop有一个或者多个task队列。当用户代理安排一个任务,必须将该任务增加到相应的event loop的一个tsak队列中。每一个task都来源于指定的任务源,比如可以为鼠标、键盘事件提供一个task队列,其他事件又是一个单独的队列。可以为鼠标、键盘事件分配更多的时间,保证交互的流畅。
同步任务(SyncTask)
主线程来执行的时候立即就能执行的代码
异步任务(AsyncTask)
说白了,异步任务就是你先去执行别的 task,等我这 xxx 完之后再往 Task Queue 里面塞一个 task 的同步任务来等待被执行
进程 && 线程
- 进程是操作系统分配资源的最小单位,线程是程序执行的最小单位