<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>