关于回调地狱问题

回调地狱是指在JavaScript中,特别是使用Axios进行API调用时,由于多个回调函数嵌套导致的代码复杂性和可读性降低的问题。这种情况下,如果一个请求失败,整个链式调用都会中断。解决回调地狱的方法包括使用async/await语法,将异步操作转换为更易于理解和管理的形式,提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于回调地狱问题

什么是回调地狱

回调地狱问题说白了是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对象,这样就可以松耦合了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值