【NOTE】【深入浅出nodejs】异步编程(三)

 2. Promise / Deferred 模式

在上面的方式中,必须严谨地设置目标。如果想先执行异步调用,延迟传递处理的方式就可以选择使用 Promise / Deferred 模式

这个模式主要包含两个部分,即Promise和Deferred。

1. Promise/A 对单个异步操作做出了以下的抽象定义:

  • Promise 操作只会处在3中状态的一种: 未完成态、完成态和失败态
  • Promise 的状态只会出现在从未完成态或者失败态转化,不能逆反。完成态和失败态不能相互转化
  • Pormise 的状态一旦转化,就不能修改

2. 在API的定义上,一个Promise对象只要具备then() 方法即可,

then的方法定义: then(fulfilledHandler, errorHandler, progressHandler)

  • 接受完成态、错误态的回调方法。在操作完成或出现错误时,将会调用对应的方法。
  • 可选地支持progress事件回调作为第三个方法
  • then() 方法只接受function对象,其余对象将被忽略
  • then() 方法继续返回Promise对象,以实现链式调用

3. 由于then()方法所做的事情是将回调函数存放起来,为了完成整个流程,还需要触发执行这些回调函数的地方,实现这些功能的对象成为 Deferred(延迟对象)

4. Promise和Deferred的整体关系

 

5. Promise中的多异步协作

通过使用all() 方法将多个异步操作合成一个新的Promise,只有当所有的Promise成功时才成功

6. Promise 进阶知识

  • 支持序列执行的Promise
  • 将API Promise化

这一块有空可以再去看看书

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>