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

源码看这里
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));
});
}
慕斯709654
浏览 315回答 2
2回答

慕标琳琳

没太研究过,这应该是某个polyfill的Promise实现吧?V8的Promise应该是cpp写的。这段代码看起来应该是为了让一些继承自Promise的子类运行正常。

青春有我

最好附上这段代码的来源,因为Promise有很多实现,这样写看不太出来作者有何想法。另外还有一个办法,寻找这一行的提交记录,看看作者写的时候是怎么想的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript