关于回调地狱问题

关于回调地狱问题

什么是回调地狱

回调地狱问题说白了是Axios中的代码耦合性问题.

回调地狱我们拆开来讲,首先大家都知道什么是回调函数,通过回调函数,用户可以获得后端返回的数据,大家也都知道什么是"地狱",地狱十八层,一层套一层,回调函数怎么会和地狱扯上关系?我们通过代码演示一下

<script>
			axios.defaults.baseURL = "http://localhost:8080";
			
			let user = {id: 10,name:"cat"}
			axios.post("/axios/saveUser",user)
				 .then(function(promise){
					 console.log(promise)
					 let args = promise.data
					 // 地二层地狱
					 axios.post("xxxx").then(function(promise2){
						 console.log(promise2)
						 let args2 = promise2.data
						 // 第三层地狱
						 axios.post("yyyy").then(function(promise3){
							 console.log(promise3)
							 let args3 = promise3.data
							 // 第N层地狱
						 })
					 })
				 })
		</script>	

通过上述代码我们不难发现,假如一个回调函数作为另一个回调函数的参数,那么就会形成axios嵌套,如果某一层的代码出现了问题,那么就运行不通过了,这样的代码耦合性太高了,所以是需要优化的.

回调地狱的解决办法

1.使用async标注函数

2.使用await标注axios

通过代码看一下

axios.defaults.baseURL = "http://localhost:8080";

			async function saveUser(){
				let user = {id:20.name:"dog"}
				let promise = await axios.post("/axios/saveUser",user)
				console.log(promise.data)
			}
			
			saveUser()

这样就不用通过.then获取promise对象了,axios被await标注后直接就可以获得promise对象,这样就可以松耦合了.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值