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