Promise.try kini tersedia di Dasar Pengukuran

Jeremy Wagner
Jeremy Wagner

Dipublikasikan: 17 Januari 2025

Melakukan pekerjaan asinkron di web bisa jadi sulit—dan banyak hal yang dilakukan di web melibatkan asinkronitas. Baik itu melibatkan panggilan fetch atau operasi asinkron lainnya, cara Anda melakukan pekerjaan tersebut akan dipermudah oleh browser saat metode bawaan memberikan penanganan error yang andal. Hal ini telah disediakan untuk Promise menggunakan metode then, catch, dan finally.

Meskipun demikian, cara Anda merancang codebase aplikasi harus fleksibel, dan tidak semua yang akan Anda lakukan di aplikasi harus asinkron. Terkadang, Anda mungkin ingin menangani hasil callback dengan cara yang lebih sederhana jika tidak masalah apakah callback yang Anda teruskan ke Promise bersifat sinkron atau tidak. Promise.try adalah metode yang kini tersedia di semua mesin browser utama yang menyederhanakan hal ini bagi developer, yang berarti bahwa metode ini kini tersedia di Dasar Pengukuran Baru.

Apa yang dimaksud dengan Promise.try dan bagaimana cara kerjanya?

Promise.try adalah metode praktis yang mempermudah penanganan error untuk fungsi callback sinkron daripada jika Anda menggunakan 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);

Kemudian, menggunakan metode then, catch, dan finally, tangani penyelesaian atau penolakan Promise:

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

Bagaimana jika fungsi callback Anda memiliki argumen? Anda dapat menangani hal ini dengan salah satu dari dua cara berikut:

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

Manfaat utama penggunaan Promise.try adalah memungkinkan Anda menggunakan Promise secara seragam, terlepas dari apakah callback yang Anda teruskan ke Promise tersebut bersifat sinkron atau asinkron. Artinya, dalam kasus fungsi utilitas yang meneruskan callback ke Promise yang banyak digunakan dalam kode Anda, penggunaan Promise.try akan memastikan penanganan error yang tepat untuk callback apa pun yang Anda teruskan ke fungsi tersebut. Untuk informasi tambahan dan potensi masalah atau kasus penggunaan lainnya, lihat dokumentasi MDN untuk Promise.try.

Kesimpulan

Setelah Promise.try mencapai Dasar Pengukuran Baru tersedia, Anda seharusnya dapat menggunakannya di semua mesin browser utama. Seiring waktu, Anda akan dapat menggunakan Promise.try di aplikasi web dengan keyakinan yang semakin meningkat bahwa Promise.try akan menjadi bagian yang stabil dan interoperabilitas dari platform web.