第 64 题:模拟实现一个 Promise.finally
Promise.prototype.finally = function (callback) { let P = this.constructor; return this.then( value => P.resolve(callback()).then(() => value), reason => P.resolve(callback()).then(() => { throw reason }) ); };
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
看了这个问题才知道,原来 promise 的 finally 只是不管成功还是失败都会执行而已,而不会永远最后执行
https://github.com/taylorhakes/promise-polyfill/blob/master/src/finally.js
finally是一个关键字,在IE低版本会引发解析错误,若兼容IE不能直接object.key语法.
因为callback如果是个异步操作,返回promise呢.希望等callback执行完再接着执行
为什么需要Promise.resolve(callback()).then(() => value)
而不能直接执行callback, return value
抄了个...
https://github.com/matthew-andrews/Promise.prototype.finally/blob/master/finally.js