```js 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 }) ); }; ```
Activity
xueqingxiao commentedon Apr 28, 2019
https://github.com/matthew-andrews/Promise.prototype.finally/blob/master/finally.js
wingmeng commentedon Apr 28, 2019
xbcc123 commentedon May 3, 2019
抄了个...
hello-chinese commentedon Jun 12, 2019
为什么需要Promise.resolve(callback()).then(() => value)
而不能直接执行callback, return value
NathanHan1 commentedon Jul 16, 2019
Arrogant128 commentedon Jul 17, 2019
HCLQ commentedon Jul 19, 2019
因为callback如果是个异步操作,返回promise呢.希望等callback执行完再接着执行
pagemarks commentedon Aug 16, 2019
https://github.com/taylorhakes/promise-polyfill/blob/master/src/finally.js
finally是一个关键字,在IE低版本会引发解析错误,若兼容IE不能直接object.key语法.
yft commentedon Aug 26, 2019
看了这个问题才知道,原来 promise 的 finally 只是不管成功还是失败都会执行而已,而不会永远最后执行😂
x-shadow-x commentedon Sep 25, 2019
想问下,这里先通过P缓存this.constructor,后面再通过P.resolve的方式调用是有什么目的么,为什么不是直接
value => Promise.resolve(callback()).then(() => value),
和reason => Promise.resolve(callback()).then(() => { throw reason })
~ 谢谢nianxiongdi commentedon Oct 6, 2019
来个简洁版的:
SoftwareEngineerPalace commentedon Oct 14, 2019
看一个多月,还是没看懂,哪位大神能逐句解释一下
SoftwareEngineerPalace commentedon Oct 14, 2019
同问
liujie2019 commentedon Nov 5, 2019
我觉得是为了兼容那些自定义的Promise版本。比如说可以自己实现一个Promise叫MyPromise,像resolve和reject这些静态方法都是挂载在MyPromise上的。通过这样let P = this.constructor;写,兼容性更好吧。
17 remaining items