蓝鸟提供了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的提案是目前在阶段3的TC39过程。
在此同时,promise.finally功能在所有浏览器中;您可以在then()
后面添加其他内容catch()
以始终调用该回调。
例:
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库。
本文地址:http://javascript.askforanswer.com/zuizhongzaibenjies6-promisezhonglanniaopromise-finallyxiangdangyushenmezhongfu.html
文章标签:bluebird , javascript , promise
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:bluebird , javascript , promise
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!