如何使用Node.js,當我運行程序的setTimeout從來不打電話
setTimeout(() => console.log("Timed out"), 0);
console.log("finishing");
我看到
finishing
Timed out
但是,當我「完成」
前加一個罰球setTimeout(() => console.log("Timed out"), 0);
throw new Error();
console.log("finishing");
我看到
throw new Error();
^
Error
at Object.<anonymous> ...(stack trace here)...
而且我沒有看到任何提及的「超時」。
這是爲什麼?即使初始上下文會拋出,一旦堆棧被釋放,我期望我傳遞給setTimeout的回調仍然會運行。
是否有未捕獲的異常導致所有超時被取消?此功能是否記錄在某處?
如果我有多個超時,是否有一種方法可以確保所有其他超時仍能繼續運行,即使它們中的一個發生了拋出?
當代碼中存在未處理的異常時,程序將中止。 – thefourtheye
你測試過哪個瀏覽器?無論是Firefox還是Chrome,*都會*記錄'超時'。 – str
@str我沒有在任何瀏覽器上測試過,但我希望所有的瀏覽器都遵守setTimeout。問題是,當你在node.js上運行它時,它的工作方式不同。 – math4tots