5.promise.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /**
  2. * js是单线程语言,弱类型类型
  3. */
  4. /**同步
  5. * 代码自上而下一行一行的执行 且执行完才会去执行下一行代码
  6. */
  7. var a = 10;
  8. console.log(a,'a');
  9. var b = 20;
  10. console.log(b,'b');
  11. /**异步:setTimeOut setInterval、Promise、事件 */
  12. // setInterval(()=>{
  13. // console.log("这个事件");
  14. // },1000)
  15. /**回调函数:同步或者异步
  16. * 定义:一个函数(A)作为实参传给另一个函数(B),并在B中被调用,则为回调函数
  17. */
  18. const test1 = () => {
  19. document.write("hello")
  20. }
  21. setTimeout(test1,1000);
  22. /**回调地狱 */
  23. // setTimeout(()=>{
  24. // console.log(2);
  25. // setTimeout(()=>{
  26. // console.log(1);
  27. // setTimeout(()=>{
  28. // console.log(3);
  29. // },1000)
  30. // },1000)
  31. // },1000)
  32. /**
  33. * Promise 异步编程
  34. * 将异步的操作 用同步的流程表达出来
  35. * 三种状态: pending 进行中
  36. * reject 已失败
  37. * resolve/fulfilled 已成功
  38. *
  39. */
  40. /**第一种 */
  41. // new Promise((resolve,reject) => {
  42. // // resolve 成功时调用
  43. // // reject 失败时调用
  44. // setTimeout(()=>{
  45. // console.log(4);
  46. // // 只会调用第一个方法 后续则不生效
  47. // resolve();
  48. // reject();
  49. // },1000)
  50. // }).then(()=> {
  51. // console.log("成功")
  52. // }).catch(()=>{
  53. // console.log("失败")
  54. // })
  55. /**第二种 */
  56. // let back = new Promise((resolve,reject)=>{
  57. // setTimeout(()=>{
  58. // console.log(5)
  59. // resolve();
  60. // },1000)
  61. // })
  62. // back.then(()=>{
  63. // console.log("111")
  64. // })
  65. // back.catch(()=>{
  66. // console.log("222")
  67. // })
  68. var newPromise = new Promise((resolve,reject)=>{reject()})
  69. newPromise.then(()=>{
  70. console.log(newPromise,"输出")
  71. })
  72. newPromise.catch(()=>{
  73. console.log(newPromise,"catch")
  74. })
  75. // new Promise((resolve,reject) => {
  76. // setTimeout(()=>{
  77. // console.log(1);
  78. // resolve();
  79. // },1000)
  80. // }).then(()=>{
  81. // new Promise(()=>{
  82. // })
  83. // }).catch(()=>{
  84. // })
  85. let p1 = new Promise((resolve,reject)=>{
  86. setTimeout(()=>{
  87. console.log(1);
  88. reject();
  89. },1000)
  90. })
  91. let p2 = new Promise((resolve,reject)=>{
  92. setTimeout(()=>{
  93. console.log(2);
  94. reject();
  95. },1200)
  96. })
  97. let p3 = new Promise((resolve,reject)=>{
  98. setTimeout(()=>{
  99. console.log(3);
  100. resolve();
  101. },800)
  102. })
  103. /**
  104. * Promise.all判断多个promise
  105. * 当传入的都成功 则成功
  106. */
  107. // Promise.all([p1,p2,p3]).then(()=>{
  108. // console.log("成功了");
  109. // }).catch(()=>{
  110. // console.log("失败了");
  111. // })
  112. /**
  113. * Promise.race 第一个执行的成功则成功
  114. */
  115. Promise.race([p1,p2,p3]).then(()=>{
  116. console.log("成功了");
  117. }).catch(()=>{
  118. console.log("失败了");
  119. })