25_promise.html 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <script>
  10. // promise es6新增 优化异步操作的
  11. // new Promise((resolve,reject)=>{}).then(()=>{}).catch(()=>{});
  12. // prmise 一共有3种状态 成功 失败 等待
  13. // fulfilled 成功
  14. // rejected 失败
  15. // padding 等待
  16. // promise 中有两个参数 resolve,reject 他们两个是函数
  17. // 第一个参数 resolve 成功的回调函数
  18. // 第二个参数 reject 失败的回调函数
  19. // new Promise((resolve,reject)=>{
  20. // // 用定时函数模拟数据请求 一秒钟后有结果
  21. // setTimeout(()=>{
  22. // // 假设数据请求成功
  23. // // resolve("hello")
  24. // // 假设数据请求失败
  25. // reject("world")
  26. // },1000)
  27. // }).then((res)=>{
  28. // console.log('成功',res)
  29. // }).catch((res)=>{
  30. // console.log('失败',res)
  31. // })
  32. // 需求:有两个(或者也可以更多)数据请求 在所有数据请求成功之后 执行相应代码
  33. // setTimeout(()=>{
  34. // console.log('hello')
  35. // },1000)
  36. // setTimeout(()=>{
  37. // console.log('world')
  38. // },2000)
  39. let p1 = new Promise((resolve, reject) => {
  40. setTimeout(() => {
  41. // console.log('hello')
  42. resolve();
  43. // reject();
  44. }, 1000)
  45. })
  46. let p2 = new Promise((resolve,reject)=>{
  47. setTimeout(() => {
  48. // console.log('world')
  49. resolve();
  50. }, 5000)
  51. })
  52. // Promise.all() 他会接收若干个promise对象 他会判断如果所有promise对象都是成功状态 那么他就成功,但如果有一个没成功他就是失败
  53. // Promise.all() 一般用作于页面中有多个数据请求 所有数据请求成功后 执行相应操作
  54. // Promise.all([p1,p2]).then(()=>{
  55. // console.log('成功')
  56. // }).catch(()=>{
  57. // console.log('失败')
  58. // })
  59. // 需求2 有两个数据请求 如果有一个成功则马上进入成功状态
  60. // Promise.race() 表示多个请求中只要有一个成功或失败就开始响应
  61. Promise.race([p1,p2]).then(()=>{
  62. console.log('成功')
  63. }).catch(()=>{
  64. console.log('失败')
  65. })
  66. </script>
  67. </body>
  68. </html>