Promise源码中safeThen函数如何理解?
源码看这里
Promise.prototype.then = function(onFulfilled, onRejected) {
if (this.constructor !== Promise) {
return safeThen(this, onFulfilled, onRejected);
}
var res = new Promise(noop);
handle(this, new Handler(onFulfilled, onRejected, res));
return res;
};
function safeThen(self, onFulfilled, onRejected) {
return new self.constructor(function (resolve, reject) {
// 以下不是很理解
var res = new Promise(noop);
res.then(resolve, reject);
handle(self, new Handler(onFulfilled, onRejected, res));
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
没太研究过,这应该是某个polyfill的Promise实现吧?V8的Promise应该是cpp写的。
这段代码看起来应该是为了让一些继承自Promise的子类运行正常。
最好附上这段代码的来源,因为 Promise 有很多实现,这样写看不太出来作者有何想法。
另外还有一个办法,寻找这一行的提交记录,看看作者写的时候是怎么想的。
就比如