Funktionen geplant mit setTimeout
laufen in die Hauptschleife ausgeführt werden, außerhalb des Körpers des Codes, die ihnen entstanden sind.
Fehler zu behandeln, legen Sie die try-catch
innerhalb des setTimeout
Handler:
setTimeout(function() {
try {
throw new Error('error!');
} catch (e) {
console.error(e);
}
}, 300)
Wenn Sie das Error
Objekt aus dem Block, der setTimeout
genannt, Promises verwenden zugreifen müssen:
const promise = new Promise((resolve, reject) => {
setTimeout(function() {
try {
throw new Error('error!');
} catch (e) {
reject(e)
}
}, 300)
})
promise
.then(result => console.log("Ok " + result))
.catch(error => console.error("Ouch " + error))
oben Dieses Beispiel ist nicht die eleganteste Art, den Fall mit einem Promise
zu behandeln. Stattdessen implementieren eine delay(ms)
Funktion wie folgt aus:
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
Dann
delay(300).then(myFunction).catch(handleError)
hören Dies sollte die akzeptierte Antwort (Hinweis: Hinweis @ Andrew Kochnev) sein weil es tatsächlich erklärt warum und am gründlichsten ist. – Jeach