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 无法处理它。