JavaScript · Senior · Frage 4 von 75

Warum wird das Promise unten nie abgelehnt?

new Promise((resolve, reject) => {
  setTimeout(() => { throw new Error("boom"); }, 0);
});
Antwort zeigen

Richtige Antwort: Die Exception im Timer wird außerhalb des Executors geworfen und ist nicht ans Promise gebunden

Erklärung

Nur synchrone Exceptions im Executor werden automatisch zu Ablehnungen. Ein Fehler in einem Timer-Callback passiert später, in einer eigenen Aufgabe: Er wird zu einem globalen unbehandelten Fehler, und das Promise bleibt für immer pending. Man muss reject explizit aufrufen.

Zum Weiterlesen

Fehler in der Frage

JavaScript · Senior · Frage 4

Teste dich selbst

Mach den Test JavaScript · Senior: Fragen und Antworten werden gemischt, und am Ende wartet eine Übersicht der Fehler.

Diesen Test machen