<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script><script> // 1. 需求: 获取流浪地球详情,只提供电影列表的接口和电影详情的接口,你会怎么做呢 /* $.ajax({ url: 'http://huruqing.cn:3000/api/film/getList', data: {}, type: 'get', dataType: 'json', success: function(res) { var filmList = res.films; var film = filmList.find(function(item) { return item.name === '流浪地球'; }); // 获取详情的接口必须等待拿到filmId才能发请求 var filmId = film.filmId; $.ajax({ url: 'http://huruqing.cn:3000/api/film/getDetail', type: 'get', data: { filmId: filmId }, dataType: 'json', success: function(res) { console.log('流浪地球详细信息', res.film); // 根据演员名称查找演员个人信息 }, error: function(err) { alert(err); } }) }, error: function(err) { alert(err); } }) */ // async await应用,可以避免过多的回调函数(俗称回调地狱), 下面是使用async await对上面代码进行改造 // 1. 封装ajax方法 function getData(url, data) { // 2.使用promise存储请求结果 var promise = new Promise(function (resolve, reject) { $.ajax({ url: url, data: data, type: 'get', dataType: 'json', success(res) { resolve(res) }, error(err) { reject(err) } }) }) return promise; } // 2.获取电影详情 async function getDetail() { // (1).请求电影列表 var url = 'http://huruqing.cn:3000/api/film/getList'; data = {}; var result1 = await getData(url, data); //查找浪流地球的那部电影 var filmList = result1.films; var film = filmList.find(function (item) { return item.name === '流浪地球'; }); // (2).请求电影详情 var url = 'http://huruqing.cn:3000/api/film/getDetail'; data = { filmId: film.filmId }; var result2 = await getData(url, data); console.log('流浪地球的', result2); } getDetail();</script>