看了好几篇教程,都有一个地方不太理解,以这篇文章中的代码为例,在 promise 处理程序那里,为什么 fulfilled 和 rejected 都可以直接 resolve 或 reject,而 pending 需要再走一遍处理程序?
上图中 x.state === "pending"
那里为什么不能写成下面这样呢
if (x instanceof Promise) {
// ...
if (x.state === "pending") {
x.then(resolve, reject);
}
// ...
return;
}
这是一个递归,注释已经说明了,如果判断为pending状态,我们不会返回最终结果,而是再次调用函数,直到结果为fulfilled或rejected才返回。