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 promise = new Promise(function (resolve, reject) {
    41. $.ajax({
    42. url: url,
    43. data: data,
    44. type: 'get',
    45. dataType: 'json',
    46. success(res) {
    47. resolve(res)
    48. },
    49. error(err) {
    50. reject(err)
    51. }
    52. })
    53. })
    54. return promise;
    55. }
    56. // 2.获取电影详情
    57. async function getDetail() {
    58. // (1).请求电影列表
    59. var url = 'http://huruqing.cn:3000/api/film/getList';
    60. 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. data = {
    70. filmId: film.filmId
    71. };
    72. var result2 = await getData(url, data);
    73. console.log('流浪地球的', result2);
    74. }
    75. getDetail();
    76. </script>