15_Promise.html 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script>
  11. // setTimeout(()=>{
  12. // console.log(1)
  13. // setTimeout(()=>{
  14. // console.log(2)
  15. // },500)
  16. // },1000)
  17. // new Promise((resolve,reject)=>{
  18. // setTimeout(()=>{
  19. // console.log(4)
  20. // resolve()
  21. // },1000)
  22. // }).then(()=>{
  23. // console.log('r')
  24. // }).catch(()=>{
  25. // console.log('失败')
  26. // })
  27. // function fetchData() {
  28. // return new Promise((resolve, reject) => {
  29. // setTimeout(() => {
  30. // const data = 'hello word'
  31. // if (data) {
  32. // resolve(data)
  33. // } else {
  34. // reject('Error')
  35. // }
  36. // },1000)
  37. // })
  38. // }
  39. // fetchData().then((data)=>{
  40. // console.log(data)
  41. // }).catch((error)=>{
  42. // console.log(err)
  43. // })
  44. // fetchData()
  45. /*
  46. 函数返回一个promise对象,在promise的构造函数当中,执行异步操作,根据操作结果调用
  47. resolve或者reject方法,在then方法中,可以执行异步操作成功的方法,catch方法中 可以执行失败的方法
  48. */
  49. /*
  50. promise 有三种状态 pending(进行中) fulfilled(已成功) rejected(已失败)
  51. 1.当一个promise 被创建的时候 初始状态就是pending
  52. 2.当异步操作成功执行的时候,promise的状态会变为fulfilled 并且会调用then方法中
  53. 的回调函数
  54. 3.当异步操作失败的时候,promise的状态会变为rejected 就会调用.catch()中的回调函数
  55. */
  56. let p1 = new Promise((resolve, reject) => {
  57. // setTimeout(() => {
  58. // console.log(1)
  59. // reject()
  60. // }, 1000);
  61. console.log(1)
  62. resolve()
  63. })
  64. let p2 = new Promise((resolve, reject) => {
  65. setTimeout(() => {
  66. console.log(2)
  67. // resolve()
  68. reject()
  69. }, 800);
  70. })
  71. let p3 = new Promise((resolve, reject) => {
  72. // setTimeout(() => {
  73. // console.log(3)
  74. // resolve()
  75. // }, 2000);
  76. console.log(3)
  77. // reject()
  78. resolve()
  79. })
  80. /* promise.all()用于将多个promise实例 包装成一个新的promise实例 */
  81. // Promise.all([p1,p2,p3]).then(()=>{
  82. // console.log('ok')
  83. // }).catch(()=>{
  84. // console.log('error')
  85. // })
  86. Promise.race([p1, p2, p3]).then(() => {
  87. console.log('ok')
  88. }).catch(() => {
  89. console.log('error')
  90. })
  91. /* Promise.race 将多个promise实例 包装成一个promise实例 */
  92. /*
  93. 任何一个promise对象为失败,就会返回失败的状态
  94. 不会管在执行异步操作的promise
  95. */
  96. </script>
  97. </body>
  98. </html>