关于then
首先then会返回一个Promise
then(successCallback, failedCallback) {
return new Promise((resolve, reject) => {
// success是 resolve的值
// 可以看出是从这里将resolve的值传给成功回调的
const x = successCallback(this.success);
// 调用successCallback有可能是一个Promise,也可能不是
if (x instanceof Promise) {
// 如果x是一个promise,重新走一次then的逻辑,通过
// successCallback(this.success); 将x的的值给resolve
// 那么当前then方法返回的promise,再次调用then
// 就会拿到上一个then 方法return 的prmise 的resolve的值
x.then((res) => { resolve(res) })
} else {
// resolve做两件事:
// 1. 将Promise的状态改为fulfilled。
// 2. 将resolve的参数给success,
// 下一次调用then方法的时候就会通过successCallback(this.success)传给then的成功回调
resolve(x)
}
})
}
网友评论