蓝鸟承诺是什么等价物,最后在原生ES6承诺中
What is the equivalent of Bluebird Promise.finally in native ES6 promises?
Bluebird提供了一种finally
方法,无论在承诺链中发生什么,都可以调用它。我发现它对于清洁目的非常方便(例如解锁资源、隐藏加载器......
ES6 原生承诺中是否有等效项?
截至2018年2月7日
Chrome 63+、Firefox 58+ 和 Opera 50+ 支持 Promise.finally
。
在 Node.js 8.1.4+ (V8 5.8+) 中,该功能在标志 --harmony-promise-finally
后面可用。
Promise.prototype.finally ECMAScript 提案目前处于 TC39 流程的第 3 阶段。
同时要有希望,终于在所有浏览器中具有功能;您可以在catch()
后添加额外的then()
,以始终调用该回调。
例:
myES6Promise.then(() => console.log('Resolved'))
.catch(() => console.log('Failed'))
.then(() => console.log('Always run this'));
JSFiddle 演示:https://jsfiddle.net/9frfjcsg/
或者,您可以扩展原型以包含finally()
方法(不推荐):
Promise.prototype.finally = function(cb) {
const res = () => this;
const fin = () => Promise.resolve(cb()).then(res);
return this.then(fin, fin);
};
JSFiddle 演示:https://jsfiddle.net/c67a6ss0/1/
还有 Promise.prototype.finally shim 库。
相关文章:
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 从函数返回角度承诺
- 我怎样才能获得承诺的价值
- 延期承诺值未更新/解析/延期
- 在承诺链中处理早期回报的最佳方式
- js代码从jQuery转换为原生代码
- 承诺在非节点式回调上使用Bluebird
- 简单的ES6承诺问题-交换解决和拒绝参数
- 蓝鸟承诺是什么等价物,最后在原生ES6承诺中
- IBM Bluemix 节点.js原生承诺支持
- 茉莉花测试函数返回原生承诺
- “捕获”如何在原生承诺链中工作
- 将大量(>40,000)原生承诺链接在一起会消耗太多内存
- 在MongoDB中使用原生ES6承诺
- 原生承诺在Chrome不解决
- JavaScript (ES6)中的原生承诺有默认的onfulfillment处理程序吗?
- 如何从服务(原生脚本/ firebase)中使用承诺
- 我怎么能承诺MongoDB原生Javascript驱动程序使用蓝鸟
- 如何链接原生Javascript承诺