Promise.try ist jetzt als Baseline verfügbar

Jeremy Wagner
Jeremy Wagner

Veröffentlicht: 17. Januar 2025

Asynchrone Arbeit im Web kann eine Herausforderung sein – und viele Aufgaben im Web erfordern Asynchronität. Ganz gleich, ob es sich um fetch-Aufrufe oder andere asynchrone Vorgänge handelt, die Ausführung dieser Arbeit wird durch Browser erleichtert, wenn integrierte Methoden eine robuste Fehlerbehandlung bieten. Für Promises wurde dies bereits mit den Methoden then, catch und finally bereitgestellt.

Dennoch sollte die Architektur der Codebasis Ihrer Anwendung flexibel sein und nicht alles, was Sie in Ihrer Anwendung tun, ist unbedingt asynchron. Manchmal möchten Sie das Ergebnis eines Rückrufs auf eine Weise verarbeiten, die einfacher wäre, wenn es keine Rolle spielen würde, ob ein Rückruf, den Sie an eine Promise übergeben haben, synchron ist oder nicht. Promise.try ist eine Methode, die jetzt in allen gängigen Browser-Engines verfügbar ist und dies für Entwickler vereinfacht. Sie ist also jetzt als Baseline Newly verfügbar.

Was ist Promise.try und wie funktioniert es?

Promise.try ist eine praktische Methode, die die Fehlerbehandlung für synchrone Callback-Funktionen einfacher macht als bei Verwendung von Promise.resolve:

// If the callback is synchronous and it throws
// an exception, the error won't be caught here:
new Promise(resolve => resolve(callback());

// But it will be here:
Promise.try(callback);

Verwende dann die Methoden then, catch und finally, um eine Promise zu lösen oder abzulehnen:

Promise.try(callback)
  .then(result => console.log(result))
  .catch(error => console.log(error))
  .finally(() => console.log("All settled."));

Was ist, wenn Ihre Callback-Funktion Argumente hat? Sie haben zwei Möglichkeiten:

// This creates an extra closure, but works:
Promise.try(() => callback(param1, param2));

// This doesn't create an extra closure, and still works:
Promise.try(callback, param1, param2);

Der Hauptvorteil von Promise.try besteht darin, dass Sie Promises einheitlich verwenden können, unabhängig davon, ob der übergebene Rückruf synchron oder asynchron ist. Das bedeutet, dass bei einer Dienstprogrammfunktion, die Callbacks an eine Promise weitergibt, die in Ihrem Code häufig verwendet wird, die Verwendung von Promise.try für eine ordnungsgemäße Fehlerbehandlung für alle Callbacks sorgt, die Sie an sie übergeben. Weitere Informationen und andere potenzielle Probleme oder Anwendungsfälle finden Sie in der MDN-Dokumentation zu Promise.try.

Fazit

Da Promise.try den Status „Neu verfügbar“ erreicht hat, sollte es in allen gängigen Browser-Engines verwendet werden können. Mit der Zeit sollten Sie Promise.try in Ihren Webanwendungen immer zuverlässiger verwenden können, da es sich um einen stabilen und interoperablen Teil der Webplattform handelt.