<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 promiseObj = new Promise(function(resolve, reject) { $.ajax({ url: url, data: data, type: 'get', dataType: 'json', success: function(res) { resolve(res); }, error: function(err) { reject(err); } }) }) return promiseObj; } // 2.获取电影详情 async function getDetail() { // (1).请求电影列表 var url = 'http://huruqing.cn:3000/api/film/getList'; var 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'; var data = { filmId: film.filmId }; var result2 = await getData(url, data); console.log('流浪地球的详情是:', result2); } getDetail();</script>