Skip to content

【Promise第15题】下面代码的输出是什么?

Posted on:2022年1月9日 at 23:01
Promise.resolve(1)
  .then((res) => {
    console.log(res);
    return 2;
  })
  .catch((err) => {
    return 3;
  })
  .then((res) => {
    console.log(res);
  });

解析

Promise可以链式调用,不过promise 每次调用 .then 或者 .catch 都会返回一个新的 promise,从而实现了链式调用, 它并不像一般我们任务的链式调用一样return this。

上面的输出结果之所以依次打印出1和2,那是因为resolve(1)之后走的是第一个then方法,并没有走catch里,所以第二个then中的res得到的实际上是第一个then的返回值。

且return 2会被包装成resolve(2)。

结果

1
2
原文转自:https://fe.ecool.fun/topic/1b41e9cc-194a-4e0c-8bc5-17a83af9abad