看了promise的源码core.js对代码中的this.constructor !== Promises实在不是很理解.
Promise.prototype.then = function(onFulfilled, onRejected) {
if (this.constructor !== Promises) {
return safeThen(this, onFulfilled, onRejected);
}
var res = new Promises(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 Promises(noop);
res.then(resolve, reject);
handle(self, new Handler(onFulfilled, onRejected, res));
});
}
this.constructor !== Promises
这个new promise才能读取到.then那这个this肯定都是这个实例
请问怎么样才能执行safeThen函数里面的代码
看了下safeThen方法,this.constructor的构造函数应该和Promsie构造函数一样,接收一个方法,并传入resolve,reject参数。
那么this.constructor !== Promises是为了判断,this. constructor是不是继承了Promsie。