为了账号安全,请及时绑定邮箱和手机立即绑定

Promise源码中safeThen函数如何理解?

Promise源码中safeThen函数如何理解?

慕斯709654 2019-05-21 10:38:07
源码看这里Promise.prototype.then=function(onFulfilled,onRejected){if(this.constructor!==Promise){returnsafeThen(this,onFulfilled,onRejected);}varres=newPromise(noop);handle(this,newHandler(onFulfilled,onRejected,res));returnres;};functionsafeThen(self,onFulfilled,onRejected){returnnewself.constructor(function(resolve,reject){//以下不是很理解varres=newPromise(noop);res.then(resolve,reject);handle(self,newHandler(onFulfilled,onRejected,res));});}
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

没太研究过,这应该是某个polyfill的Promise实现吧?V8的Promise应该是cpp写的。
这段代码看起来应该是为了让一些继承自Promise的子类运行正常。
                            
查看完整回答
反对 回复 2019-05-21
?
青春有我

TA贡献1784条经验 获得超8个赞

最好附上这段代码的来源,因为Promise有很多实现,这样写看不太出来作者有何想法。
另外还有一个办法,寻找这一行的提交记录,看看作者写的时候是怎么想的。
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信