通过promise处理回调地狱问题,初级篇

通过promise处理回调地狱问题,初级篇

回调地狱问题是什么

不知道各位小朋友,有没有使用过,通过Ajax对接口发起请求,如果使用过肯定遇到过这样的问题,就是ajax请求里再使用ajax请求,然后再使用ajax请求。这样的操作如果使用了多次,会让你的代码特别混乱,让你自己的看不下去你的代码,而且很容易遇到错误。

处理回调地狱问题

ES6新语法的promise就可以解决回调地狱问题,上代码!这里的setTimeOut就仿真异步请求

new Promise((resolve, reject)=>{
	console.log('这是第一个数据')
	setTimeOut(()=>{
		resolve('这是第二个数据')
	},1000)
}).then(res=>{
	console.log(res);
	//如果想要继续回调函数,就需要返回一个新的promise对象
	return new Promise((resolve, reject){
		resolve('这是第三个数据')
	})
}).then(res=>{
	console.log(res);
}).catch(err=>{
	//此处的catch是获取上面所有的回调函数的异常,不止是最后一个
	console.log(err)
})

最后的数据结果就是,先输出“这是第一个数据”,三秒后输出“这是第二个数据”,最后再输出“这是第三个数据”,所以说,通过promise的处理方法,输出的结果是你想要的输出顺序的结果。

处理并发问题

如果需要获取多个请求,可以通过Promise.all()方法来处理,把所有请求到的数据,都放在一个数组中。

Promise.all([
	new Promise((resolve, reject)=>{
		resolve('这是第一个数据');
	}),
	new Promise((resolve, reject)=>{
		resolve('这是第二个数据');
	})
]).then(res=>{
	console.log(res); //['这是第一个数据','这是第二个数据']
}).catch(err=>{
	console.log(err);
})

这样所有请求到的数据,都加入到你的res中了。之前,我写过生成器对回调地狱问题的处理,有兴趣的大佬们,可以看看点评一下哈。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值