Rumah >hujung hadapan web >tutorial js >Adakah Menggunakan `async/wait` Di Dalam Pembina `Promise` Anti-Corak?

Adakah Menggunakan `async/wait` Di Dalam Pembina `Promise` Anti-Corak?

DDD
DDDasal
2024-12-18 22:00:16520semak imbas

Is Using `async/await` Inside a `Promise` Constructor an Anti-Pattern?

Adakah ia anti-corak untuk menggunakan async/menunggu dalam pembina Promise() baharu?

Pengaturcaraan tak segerak boleh mencabar, terutamanya apabila berurusan dengan panggilan balik bersarang. Untuk memudahkan ini, ES6 memperkenalkan sintaks async/menunggu. Walau bagaimanapun, apabila menggunakan async/await dalam fungsi pembina Promise() baharu, berhati-hati diperlukan.

Dalam contoh yang disediakan:

return new Promise(async (resolve, reject) => {
  eachLimit((await getAsyncArray), 500, (item, callback) => {
    // do other things that use native promises.
  }, (error) => {
    if (error) return reject(error);
    // resolve here passing the next value.
  });
});

Anda menggunakan await untuk memanggil getAsyncArray , yang mengembalikan Janji, tetapi dalam fungsi pelaksana Promise constructor. Ini dikenali sebagai "anti-corak Promise constructor."

Bahaya utama dengan corak ini ialah ralat mungkin tidak dapat dikendalikan dengan betul. Ketaksinkronan boleh mencipta gelagat yang tidak dapat diramalkan dan menggunakan async/menunggu menjadikannya lebih sukar untuk melihat isu yang berpotensi.

Sebagai contoh, kesilapan silap dalam fungsi getAsyncArray akan membawa kepada TypeError, tetapi ia mungkin tidak ditangkap oleh panggilan balik eachLimit pengendalian ralat. Walau bagaimanapun, jika async/wait dialih keluar, ralat akan dilemparkan ke luar pembina Promise dan dikendalikan dengan sewajarnya.

Kesimpulannya, semasa menggunakan async/wait dalam fungsi pembina Promise() mungkin kelihatan mudah, ia adalah anti-corak kerana potensi untuk masalah pengendalian ralat. Sebaliknya, pertimbangkan untuk menggunakan async/tunggu di luar pembina Promise untuk memastikan penyebaran ralat yang betul dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Adakah Menggunakan `async/wait` Di Dalam Pembina `Promise` Anti-Corak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn