根据输入写输出,promise.catch.then执行顺序问题

新手上路,请多包涵
new Promise(resolve => {
console.log(1);
resolve('resolve');
console.log(2);
reject('error')
}).catch((err) => {
console.log(err);
}).then((res) => {
console.log(res)
});
Promise.resolve().then(() => {
console.log(3);
});
console.log(4);

主要的想不明白的地方有
为什么console.log(res)可以打印出resolved;
这里的.catch有没有执行;
为什么.then的执行在console.log(3)之后

前端小白有点被绕晕了。感谢回答!

阅读 2.6k
1 个回答

执行resolve方法之后,Promise状态改变为resolved态,不会被catch,所以catch方法不执行

.then里的res接受的是resolve()的参数,所以可以打印出resolved

.then方法是微任务,主程序执行完后,再执行微任务,所以.then执行再3后

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题