promise链式调用解决回调地狱问题

回调地狱

当我们使用axios链接服务器,调取类似父子级关系式,回调函数可能会使用到重复嵌套的结构。

特性:

1.可读性差

2.异常无法捕获

3.耦合性严重

promise链式调用

依靠then()方法会返回一个新生成的promise对象特性,继续串联下一环任务,直到结束。每个promise对象管理一个异步任务,用then返回promise对象,串联起来。

举例:

获取国家promise对象.then(回调函数)新的promise对象.then(回调函数)新的promise对象.then(回调函数)
return获取省份promise对象return获取城市promise对象
细节:

then()回调函数中的返回值,会影响新生成的promise对象最终状态和结果

通过链式调用,解决回调函数嵌套问题

代码举例:
let guoJia = ''//promise链式调用让两个回调函数成为兄弟关系,无法访问前一级的对象,故声明全局变量,赋值后下一个回调函数仍可以使用
//得到国家promise对象
axios({url:'#/country'}).then(result=>{
guoJia = result.data.list[0]
document.querySelector('.country').innerHTML = guoJia
//得到省份promise对象
return axios({url:'#/country',params:{guoJia}})
}).then(result=>{
const shengFeng = result.data.list[0]
document.querySelector('.province').innerHTML = shengFeng
//得到地区promise对象
return axios({url:'#/province',params:{shengFeng}})
}).then(result=>{
const areaName = result.data.list[0]
document.querySelector('.area').innerHTML = areaName
//输出反馈获取值
console.log(result)
})

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值