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
”。所以,所有同步错误都会得到处理。
但是这里的错误并不是在 executor 运行时生成的,而是在稍后生成的。因此,promise 无法处理它。