什么是单线程?
- 单线程就是同一个时间内只执行一件事情,做完一个做下一个
-
为什么要JS 中要出现异步代码
因为JS单线程执行的特性,如果按单线程模式正常执行的话,那么一些耗时任务就会阻塞任务的执行 ```javascript console.log(1) setTimeout( () = { console.log(3); },4000) console.log(2);
// 如果JS不做异步任务队列处理的话,那么执行结果就是1,3,2; 而且因为中间有个延时器他会延迟2的打印
// 但是如果有了这个异步队列,就可以先执行1,2,然后打印3;
<a name="to270"></a>### 常见的宏任务- setTimeout- setinterVal- 代码块,一个文件就是一个代码块- 一个<script></script>也是一个代码块<a name="UEC9k"></a>### 常见的微任务- mutationObserver- Promise 里面的then和catch方法```javascript/** @Author: WangXinLe* @Date: 2021-12-11 18:24:49* @Last Modified by: WangXinLe* @Last Modified time: 2021-12-11 18:24:49*/// 微任务和宏任务的执行顺序const p = function() {return new Promise( (resolve, reject) => {const p1 = new Promise( (resolve, reject) => {setTimeout(() => {resolve(1)},0)})p1.then(res => {console.log(res)})console.log(3);resolve(4);} )}p().then((res) => {console.log(res);})console.log('end');/*** 先执行 3* 后执行 end* 后执行 4* 最后执行 1*/
