什么是单线程?

  • 单线程就是同一个时间内只执行一件事情,做完一个做下一个
  • JS 就是单线程执行机制

    为什么要JS 中要出现异步代码

  • 因为JS单线程执行的特性,如果按单线程模式正常执行的话,那么一些耗时任务就会阻塞任务的执行 ```javascript console.log(1) setTimeout( () = { console.log(3); },4000) console.log(2);

// 如果JS不做异步任务队列处理的话,那么执行结果就是1,3,2; 而且因为中间有个延时器他会延迟2的打印

// 但是如果有了这个异步队列,就可以先执行1,2,然后打印3;

  1. <a name="to270"></a>
  2. ### 常见的宏任务
  3. - setTimeout
  4. - setinterVal
  5. - 代码块,一个文件就是一个代码块
  6. - 一个<script></script>也是一个代码块
  7. <a name="UEC9k"></a>
  8. ### 常见的微任务
  9. - mutationObserver
  10. - Promise 里面的then和catch方法
  11. ```javascript
  12. /*
  13. * @Author: WangXinLe
  14. * @Date: 2021-12-11 18:24:49
  15. * @Last Modified by: WangXinLe
  16. * @Last Modified time: 2021-12-11 18:24:49
  17. */
  18. // 微任务和宏任务的执行顺序
  19. const p = function() {
  20. return new Promise( (resolve, reject) => {
  21. const p1 = new Promise( (resolve, reject) => {
  22. setTimeout(() => {
  23. resolve(1)
  24. },0)
  25. })
  26. p1.then(res => {
  27. console.log(res)
  28. })
  29. console.log(3);
  30. resolve(4);
  31. } )
  32. }
  33. p().then((res) => {
  34. console.log(res);
  35. })
  36. console.log('end');
  37. /**
  38. * 先执行 3
  39. * 后执行 end
  40. * 后执行 4
  41. * 最后执行 1
  42. */