讲讲标准的 Promise 长啥样?

更多腾讯海量技术文章,请关注云加社区:https://cloud.tencent.com/developer

作者:feix760

序言

不同项目下lib里的promise/deferred往往是差异化最多的,用起来和自己的习惯相比经常是缺胳膊少腿,因此聊聊标准的Promise的啥样的。

不同的 Promise 差异基本表现如下:

1.构造Promise对象 new Promise().resolve() or new Pomise(function(resolve, reject) {})

2.是否有 .done().fail() .always()等方法

3.是否有Promise.all()方法

4.是否有isRejected() isResolved()

5..then() return 结果链式的处理

有哪些标准

Promises/A

Promises/A+

Promises/A+兼容扩展Promises/A而来,es6里的Promise准守Promises/A+规范,也是当今的标准规范。

标准的 Promise

构造 :

new Promise(function(resolve, reject) {})

静态方法 :

Promise.all(iterable)

Promise.race(iterable)

Promise.reject(reason)

Promise.resolve(value)

对象方法:

then方法参数onFulfilled可以直接返回数据/Promise实现链式,onRejected可以返回Promise反转结果链式

不标准的使用

1.构造Promise对象: new Promise().resolve()( 请使用new Promise(function(resolve, reject) {}) )

2..done().fail().always() 方法的使用 ( 请使用.then() .catch())

3.isRejected() isResolved()方法的使用

第三方库的支持

node 0.12+ 支持标准es6 promise规范

npm promise 支持标准es6规范,增加了done()等方法

npm node-promise 支持标准es6规范,增加了更多的工具方法,人气不如npm promise

jquery promise Promises/A 都没完整准守,存在.done() .fail() .always()等各种方法,.then()的链式处理弱爆了

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171227A0FT6X00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区