使用promise的时候会将函数的状态暂停/凝固

    1.使用new 关键字实现promise
    2.promise有两种状态resolve,reject
    3.promise函数不会马上触发,要通过一个then函数去触发
    4.then触发的是resolve的状态,catch触发失败的状态

    • resolve —>成功
    • reject —>失败

    5.使用promise之后将http请求由纵向的变为横向的了
    6.ajax就是一个promise

    1. <script>
    2. /* 使用promise之后将http请求由纵向的变为横向的了 */
    3. http("top/playlist?cat=华语").then(res=>{
    4. let id = res.playlists[0].id;
    5. return id
    6. }).then(res=>{
    7. http(`playlist/detail?id=${res}`).then(res=>{
    8. let id = res.playlist.trackIds[0].id;
    9. return id
    10. }).then(res=>{
    11. http(`song/url?id=${res}`).then(res=>{
    12. console.log(res)
    13. })
    14. })
    15. })
    16. </script>
    17. <script>
    18. function go(){
    19. return new Promise((resolve,reject)=>{
    20. resolve(1);
    21. reject(2)
    22. })
    23. }
    24. go().then(res=>{
    25. console.log(res)
    26. }).catch(err=>{
    27. console.log(err)
    28. })
    29. </script>
    30. <script>
    31. function http(){
    32. return new Promise((resolve,reject)=>{
    33. $.ajax({
    34. url:"https://music.aityp.com/top/playlist?cat=华语",
    35. type:"get",
    36. success:res=>{
    37. resolve(res)
    38. },
    39. error:err=>{
    40. reject(err)
    41. }
    42. })
    43. })
    44. }
    45. http().then(res=>{
    46. console.log(res.playists)
    47. })
    48. </script>