2

NPM酷库,每天两分钟,了解一个流行NPM库。

昨天我们了解了如何使用Promise管理异步任务,但是ES2015标准的Promise对象实现的接口非常有限,只包含 Promise.all() Promise.race() promise.then() promise.catch() ,这些接口在实际使用中是不够用的,比如我们没办法直接判断一个Promise对象是否已经完成。

q

q是一个Promise实现库,并且相对于ES2015标准,q提供了很多实用的工具函数。下面我们就列举一些非常有用的函数:

判断Promise状态

  • promise.isFulfilled()
  • promise.isRejected()
  • promise.isPending()

promise.finally(callback)

Promise最终完成后调用,无论是否失败,注意,ES2016 标准的Promise存在此函数,但是Edge等一些浏览器并未实现此函数。

promise.timeout(ms,message)

异步处理超时设置

promise.delay(ms)

延时执行

其他关于返回值的工具函数

比如 promise.get(propertyName) 的作用是获取Promise返回对象的某个属性,作用等同于:

promise.then(function (o) {
    return o[propertyName];
});

这种函数有很多,具体可以查看API文档。

参考资料

https://github.com/kriskowal/q
https://github.com/kriskowal/...


脉冲云_梁兴臣
616 声望194 粉丝

脉冲云CTO,JS全栈开发,DevOps实施,开发体验优化,开发效率提升