JS中的Promise的then方法做了啥

JavaScript010

JS中的Promise的then方法做了啥,第1张

好问题,正中Promise机制的核心之一:then方法返回另一个promise2,其内容是由回调方法的返回值决定的;回调中可以返回promise3,使外面的promise2的内容成为promise3的内容也就是说,如果要用promise来递归,只需要在then回调中返回递归promise即可。

then方法的实现里,确实是返回了一个新的Promise,你说的double,其实是then的第一个参数onFulfilled。

this.then = function (onFulfilled, onRejected) {

var self = this

return new Promise(function (resolve, reject) {

return self.done(function (result) {

if (typeof onFulfilled === 'function') {

try {

return resolve(onFulfilled(result))

} catch (ex) {

return reject(ex)

}

} else {

return resolve(result)

}

}, function (error) {

if (typeof onRejected === 'function') {

try {

return resolve(onRejected(error))

} catch (ex) {

return reject(ex)

}

} else {

return reject(error)

}

})

})

}