28_promise.html 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 src="./js/ajax.js"></script>
  10. <script>
  11. // 回调地狱
  12. // ajax("GET","./data/a.json",function(res){
  13. // ajax("GET","./data/b.json",function(res){
  14. // ajax("GET","./data/c.json",function(res){
  15. // console.log("成功了",res);
  16. // })
  17. // })
  18. // })
  19. // Promise 解决回调地狱问题
  20. // 创建 Promise 实例 接收一个函数 函数内有两个参数 resolve 代表成功 reject 代表失败
  21. // 成功的效果 调用 then 方法
  22. // let p1 = new Promise((resolve,reject)=>{
  23. // ajax("GET","./data/a.json",function(res){
  24. // resolve(res);
  25. // })
  26. // });
  27. // // 只要promise 中执行了 resolve 方法 就可以通过 then 方法获取到成功的结果
  28. // p1.then(res=>{
  29. // console.log(res);
  30. // })
  31. // 失败的效果 调用 catch 方法
  32. // let p1 = new Promise((resolve,reject)=>{
  33. // ajax("GET","./data/a.json",function(res){
  34. // reject(res);
  35. // })
  36. // });
  37. // // 只要promise 中执行了 reject 方法 就可以通过 catch 方法获取到失败的结果
  38. // p1.catch(err=>{
  39. // console.log(err);
  40. // })
  41. // Promise.all 方法 同时执行多个 Promise 实例 等待所有 Promise 实例执行完成后 才调用 then 方法
  42. let p1 = new Promise((resolve,reject)=>{
  43. ajax("GET","./data/a.json",function(res){
  44. resolve(res);
  45. })
  46. })
  47. let p2 = new Promise((resolve,reject)=>{
  48. ajax("GET","./data/b.json",function(res){
  49. resolve(res);
  50. })
  51. })
  52. let p3 = new Promise((resolve,reject)=>{
  53. ajax("GET","./data/c.json",function(res){
  54. resolve(res);
  55. })
  56. })
  57. // Promise如果都成功就会执行 then 方法 如果有一个失败就会执行 catch 方法
  58. // Promise.all([p1,p2,p3]).then((res)=>{
  59. // console.log("全部成功",res);
  60. // }).catch((res)=>{
  61. // console.log("失败",res);
  62. // })
  63. // Promise.race() 只要第一个 Promise 实例执行成功 就会调用 then 方法 如果 Promise 实例执行失败 就会调用 catch 方法
  64. // Promise.race([p1,p2,p3]).then((res)=>{
  65. // console.log("成功",res);
  66. // }).catch((res)=>{
  67. // console.log("失败",res);
  68. // })
  69. </script>
  70. </body>
  71. </html>