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.