6.宏任务 微任务.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * 异步任务:宏任务 微任务
  3. * 宏任务:整体的script代码、settimeout、setinterval
  4. * 微任务:promise process.nextTick
  5. * 代码的执行顺序:
  6. * 先执行主线栈中(同步任务),在执行异步任务
  7. * 先执行所有的微任务 全部执行完成后 在执行宏任务
  8. */
  9. // setTimeout(function() {
  10. // console.log('1');//a1
  11. // })
  12. // new Promise(function(resolve) {
  13. // console.log('2');
  14. // resolve()
  15. // }).then(function() {
  16. // console.log('3');//b1
  17. // })
  18. // console.log('4');
  19. // 2 4 3 1
  20. // console.log(1)
  21. // setTimeout(function(){
  22. // console.log(2);
  23. // let promise = new Promise(function(resolve, reject) {
  24. // console.log(7);
  25. // resolve()
  26. // }).then(function(){
  27. // console.log(8)
  28. // });
  29. // },1000);// 宏1
  30. // setTimeout(function(){
  31. // console.log(10);
  32. // let promise = new Promise(function(resolve, reject) {
  33. // console.log(11);
  34. // resolve()
  35. // }).then(function(){
  36. // console.log(12)
  37. // });
  38. // },0);//宏2
  39. // let promise = new Promise(function(resolve, reject) {
  40. // console.log(3);
  41. // resolve()
  42. // }).then(function(){
  43. // console.log(4) //b1
  44. // }).then(function(){
  45. // console.log(9) // b2
  46. // });
  47. // console.log(5)
  48. // 1 3 5 4 9 10 11 12 2 7 8
  49. console.log('1');
  50. setTimeout(function() {
  51. console.log('2');
  52. // process.nextTick(function() {
  53. // console.log('3');
  54. // })//a1
  55. new Promise(function(resolve) {
  56. console.log('4');
  57. resolve();
  58. }).then(function() {
  59. console.log('5')//a2
  60. })
  61. })//宏1
  62. // process.nextTick(function() {
  63. // console.log('6');
  64. // }) //微1
  65. new Promise(function(resolve) {
  66. console.log('7');
  67. resolve();
  68. }).then(function() {
  69. console.log('8') // 微2
  70. })
  71. setTimeout(function() {
  72. console.log('9');
  73. // process.nextTick(function() {
  74. // console.log('10');
  75. // })
  76. new Promise(function(resolve) {
  77. console.log('11');
  78. resolve();
  79. }).then(function() {
  80. console.log('12')
  81. })
  82. })//宏2
  83. // 1 7 8 2 4 5 9 11 12