更多腾讯海量技术文章,请关注云加社区: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()的链式处理弱爆了
领取专属 10元无门槛券
私享最新 技术干货