Platforma Promise.try jest teraz dostępna jako Baseline

Jeremy Wagner
Jeremy Wagner

Data publikacji: 17 stycznia 2025 r.

Praca asynchroniczna w internecie może być trudna, a wiele działań wykonywanych w internecie jest asynchronicznych. Niezależnie od tego, czy chodzi o wywołania fetch czy inne operacje asynchroniczne, przeglądarki ułatwiają Ci to zadanie, gdy wbudowane metody zapewniają niezawodne przetwarzanie błędów. Dane te zostały już przekazane w przypadku obietnic używających metod then, catchfinally.

Mimo to sposób, w jaki tworzysz kod źródłowy aplikacji, powinien być elastyczny, a nie wszystko, co robisz w aplikacji, musi być asynchroniczne. Czasami możesz chcieć obsłużyć wynik wywołania zwrotnego w sposób prostszy, jeśli nie ma znaczenia, czy wywołanie zwrotne przekazane do funkcji Promise jest synchroniczne, czy nie. Promise.try to metoda dostępna teraz we wszystkich głównych silnikach przeglądarek, która upraszcza to zadanie deweloperom. Oznacza to, że jest to teraz nowa podstawowa metoda.

Czym jest Promise.try i jak działa?

Promise.try to wygodna metoda, która ułatwia obsługę błędów w przypadku synchronicznych funkcji wywołania zwrotnego w większym stopniu niż w przypadku funkcji 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);

Następnie za pomocą metod then, catchfinally przeprowadź rozwiązanie lub odrzucenie Promise:

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

Co zrobić, jeśli funkcja wywołania zwrotnego ma argumenty? Możesz to zrobić na 2 sposoby:

// 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);

Główną zaletą funkcji Promise.try jest to, że pozwala ona używać Promise’ów w sposób jednolity niezależnie od tego, czy przekazywana do niej funkcja wywołania zwrotnego jest synchroniczna czy asynchroniczna. Oznacza to, że w przypadku funkcji pomocniczej, która przekazuje wywołania zwrotne do funkcji Promise, która jest często używana w Twoim kodzie, użycie funkcji Promise.try zapewnia prawidłowe przetwarzanie błędów w przypadku dowolnego przekazanego do niej wywołania zwrotnego. Aby uzyskać więcej informacji i poznać inne potencjalne problemy lub przypadki użycia, zapoznaj się z dokumentacją MDN na temat Promise.try.

Podsumowanie

Teraz, gdy Promise.try osiągnęła poziom „Nowo dostępne”, możesz z niej korzystać we wszystkich głównych silnikach przeglądarek. Z czasem możesz oczekiwać, że będziesz mieć możliwość używania Promise.try w swoich aplikacjach internetowych, mając coraz większe przekonanie, że będzie to stabilna i interoperacyjna część platformy internetowej.