回到课程
本资料仅提供以下语言版本:English。请 帮助我们 将其翻译为 简体中文 版本。

setTimeout 中的错误

你认为 .catch 会不会触发?请解释一下?

new Promise(function(resolve, reject) {
  setTimeout(() => {
    throw new Error("Whoops!");
  }, 1000);
}).catch(alert);

答案是:不会,它不会触发:

new Promise(function(resolve, reject) {
  setTimeout(() => {
    throw new Error("Whoops!");
  }, 1000);
}).catch(alert);

就像本章讲的,函数代码被一个“隐式的 try..catch”包围。所以所有的同步错误都会被处理。

但是 promise 不能处理那些非执行代码运行时而是之后产生的错误。