1. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    2. <script>
    3. // 1. 需求:获取流浪地球详情,只提供电影列表的接口和电影详情的接口,你会怎么做呢
    4. // $.ajax({
    5. // url: 'http://huruqing.cn:3000/api/film/getList',
    6. // data: {},
    7. // type: 'get',
    8. // dataType: 'json',
    9. // success: function(res) {
    10. // var filmList = res.films;
    11. // var film = filmList.find(function(item) {
    12. // return item.name === '流浪地球';
    13. // });
    14. // // 获取详情的接口必须等待拿到filmId才能发请求
    15. // var filmId = film.filmId;
    16. // $.ajax({
    17. // url: 'http://huruqing.cn:3000/api/film/getDetail',
    18. // type: 'get',
    19. // data: {
    20. // filmId: filmId
    21. // },
    22. // dataType: 'json',
    23. // success: function(res) {
    24. // console.log('流浪地球详细信息', res.film);
    25. // // 根据演员名称查找演员个人信息
    26. // },
    27. // error: function(err) {
    28. // alert(err);
    29. // }
    30. // })
    31. // },
    32. // error: function(err) {
    33. // alert(err);
    34. // }
    35. // })
    36. // async await应用,可以避免过多的回调函数(俗称回调地狱), 下面是使用async await对上面代码进行改造
    37. // 1. 封装ajax方法
    38. function getData(url, data) {
    39. // 2.使用promise对象存储请求结果
    40. var promiseObj = new Promise(function(resolve, reject) {
    41. $.ajax({
    42. url: url,
    43. data: data,
    44. type: 'get',
    45. dataType: 'json',
    46. success: function(res) {
    47. resolve(res);
    48. },
    49. error: function(err) {
    50. reject(err);
    51. }
    52. })
    53. })
    54. return promiseObj;
    55. }
    56. // 2.获取电影详情
    57. async function getDetail() {
    58. // (1).请求电影列表
    59. var url = 'http://huruqing.cn:3000/api/film/getList';
    60. var data = {};
    61. var result1 = await getData(url, data);
    62. // 查找流浪地球的那部电影
    63. var filmList = result1.films;
    64. var film = filmList.find(function(item) {
    65. return item.name === '流浪地球';
    66. });
    67. // (2).请求电影详情
    68. var url = 'http://huruqing.cn:3000/api/film/getDetail';
    69. var data = {
    70. filmId: film.filmId
    71. };
    72. var result2 = await getData(url, data);
    73. console.log('流浪地球的详情是:', result2);
    74. }
    75. getDetail();
    76. </script>