Promise链式调用#
概念:依靠
then()
方法会返回一个
新生成的Promise对象
特性,继续串联下一环任务,直到结束
细节:
then()
回调函数中的
返回值
,会影响新生成的Promise对象
最终状态和结果
好处:通过链式调用,解决回调函数嵌套问题
链式调用-回调函数地狱#
目标:使用Promise链式调用,解决回调函数地狱问题
做法:每个Promise对象中管理一个异步任务,用then返回Promise对象,串联起来
let pname = '';
// 1.获取省份Promise对象
axios({
url: 'http://hmajax.itheima.net/api/province'
}).then(res => {
console.log(res);
pname = res.data.list[0]
document.querySelector('.province').innerHTML = pname;
// 2.获取城市Promise对象
return axios({
url: 'http://hmajax.itheima.net/api/city',
params: {
pname
}
})
}).then(res => {
console.log(res);
const cname = res.data.list[0]
document.querySelector('.city').innerHTML = cname;
// 3.获取地区Promise对象
return axios({
url: 'http://hmajax.itheima.net/api/area',
params: {
pname,
cname
}
})
}).then(res => {
console.log(res);
const areaname = res.data.list[0]
document.querySelector('.area').innerHTML = areaname;
})