Promise 与 generator函数

Promise 与 generator函数一. 回调地狱二. Promise使用PromiseGenerator 函数作者: DocWhite白先生什么是Promise?如果还不知道什么是Promise推荐读 阮一峰老师的ES6入门 里面有关于 ES6新特性和Promise更全面和学术话的介绍。一. 回调地狱在说Promise之前,先聊聊一个前端开发最常见的烦恼:回调地狱,什么是回调回调地...
摘要由CSDN通过智能技术生成


作者: DocWhite白先生

什么是Promise?如果还不知道什么是Promise推荐读 阮一峰老师的ES6入门 里面有关于 ES6新特性和Promise更全面和学术话的介绍。

一. 回调地狱

在说Promise之前,先聊聊一个前端开发最常见的烦恼:回调地狱,什么是回调回调地狱。
举个例子:

// 检测用户是否存在。
$.ajax({
	url: 'http://api.domain.com/check-user',
	method: 'get',
	success: function(res) {
		const {data, message, status} = res;
		if(Number(status) === 200){
			// 用户存在则获取用户任务侧写
			$.axios({
				url: "http://api.domain.com/get-user-profile" ,
				success: function (res) {
					// 执行查询成功的回调
				}
			})
		}
	}
})

这就是最常见的回调地狱。之所以举这个例子,是因为所有的网络操作,浏览器事件都是异步执行,异步执行的后果就是我们只能通过回调函数来完成层层递进的业务逻辑,一旦业务逻辑中每一个步骤,都要触发异步操作并且要依赖该异步操作的结果进行下一步操作,就会让开发人员陷入这种回调地狱。

在Promise 没有出现有没有办法处理这种情况? 有,jQuery封装了一个deferred对象,叫做延迟对象。封装的方法与Promise对象已经极其相似。

二. Promise

回归正题

了解了什么是回调地狱,当然要开始聊聊如何规避这种回调地狱,让代码更易读(上面的示例代码一旦继续增加嵌套,将变得难以阅读和理解)。Promise出现了,起初有很多开源库完成并开源了Promise对象的实现,但是直到ES6,Promise才成为JavaScript其中的一个标准。

Promise对象存在3中状态:pending, resolved, rejected。分别表示未完成,完成,拒绝(失败)。它的最后结果只有两种resolved和rejected。

使用Promise

什么是Promise,它是一个容器,用来存储一个

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值