Rumah >hujung hadapan web >tutorial js >Adakah Menggunakan async/waiit Inside a Promise Constructor merupakan Anti-Corak?

Adakah Menggunakan async/waiit Inside a Promise Constructor merupakan Anti-Corak?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-16 17:41:11445semak imbas

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

Menggunakan async/waiit Inside a Promise() Constructor: An Anti-Corak?

Dalam senario ini, anda menggunakan async fungsi .eachLimit untuk mengurus operasi serentak. Walau bagaimanapun, penggunaan async/menunggu anda di dalam fungsi pembina Promise menimbulkan kebimbangan.

Anti-Corak Promise Constructor

Menggunakan janji dalam fungsi pelaksana promise constructor, semasa anda sedang dilakukan, dianggap sebagai anti-corak. Risiko utama, seperti yang ditunjukkan dalam kod anda, adalah kemungkinan ralat terlepas tanpa disemak.

Selain itu, async/wait memperkenalkan kerumitan tambahan, yang berpotensi mengaburkan isu ini. Sebagai contoh, dalam kod anda:

let p = new Promise(resolve => {
  ""(); // TypeError
  resolve();
});

(async () => {
  await p;
})().catch(e => console.log("Caught: " + e)); // Catches it.

Di sini, TypeError tidak disedari dalam pembina janji, tetapi ia ditangkap apabila menggunakan async/await. Kejutan sedemikian boleh menimbulkan masalah.

Oleh itu, sementara kod anda membenarkan anda mengakses nilai dalam panggilan balik bersarang, adalah penting untuk menangani ralat dengan berhati-hati dan mengelakkan anti-corak ini untuk memastikan kod yang mantap dan boleh diselenggara.

Atas ialah kandungan terperinci Adakah Menggunakan async/waiit Inside a Promise Constructor merupakan 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