什么是蓝鸟诺言相当于本地ES6承诺最后?
蓝鸟提供了一个“终于”的方法,被称为无论发生在你的诺言链。 我发现它非常方便,用于清理目的(如解锁资源,隐藏装载程序…)
ES6原生承诺中是否有相同的内容?
以下是Finally方法的文档参考:
http://bluebirdjs.com/docs/api/finally.html
谢谢
简答: 没有一个 。
在catch()
then()
之后添加一个额外的then()
catch()
来始终调用该callback函数。
例:
myES6Promise.then(() => console.log('Resolved')) .catch(() => console.log('Failed')) .then(() => console.log('Always run this'));
JSFiddle演示: https ://jsfiddle.net/moogs/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/moogs/c67a6ss0/1/
资料来源:
- ES6承诺解决callback?
有一个build议在原生Promise中实现了finally()
方法:
- Promise.prototype.finally TC39 ECMAScriptbuild议