Rumah > hujung hadapan web > tutorial js > Mengapakah Nesting `async/waiit` dalam Promise Constructors sebagai Anti-Corak?

Mengapakah Nesting `async/waiit` dalam Promise Constructors sebagai Anti-Corak?

Mary-Kate Olsen
Lepaskan: 2024-12-16 13:49:12
asal
642 orang telah melayarinya

Why is Nesting `async/await` within Promise Constructors an Anti-Pattern?

Anti-Corak Nesting async/menunggu dalam Promise Constructors

Dalam keadaan ini, di mana fungsi async.eachLimit digunakan untuk mengurus bilangan operasi serentak, dilema timbul. Godaan awal adalah untuk menstrukturkan kod seperti berikut:

function myFunction() {
  return new Promise(async (resolve, reject) => {
    eachLimit((await getAsyncArray), 500, (item, callback) => {
      // Operations using native promises
    }, (error) => {
      if (error) return reject(error);
      // Resolve with the next value
    });
  });
}
Salin selepas log masuk

Walaupun kelihatan logik untuk mengisytiharkan fungsi "myFunction" sebagai tak segerak, ia tidak boleh dilaksanakan kerana panggilan balik dalaman bagi fungsi "eachLimit" kekal tidak boleh diakses. Walau bagaimanapun, pendekatan ini menimbulkan perangkap yang ketara: potensi ralat tidak dapat dikendalikan.

Pendekatan ini ialah contoh buku teks anti-corak yang melibatkan penggunaan janji dalam pembina janji lain. Dalam kes ini, risiko ralat yang tidak dapat dikendalikan adalah sangat akut. Untuk mengelakkan perkara ini, pertimbangkan coretan kod berikut:

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

(async () => {
  await p;
})().catch(e => console.log("Caught: " + e)); // Catches the error.
Salin selepas log masuk

Dalam senario ini, sementara baris pertama membuang pengecualian, ralat dikendalikan dengan anggun oleh blok "tangkap" fungsi anak panah tak segerak. Pengendalian ralat yang betul adalah penting untuk mengekalkan kestabilan dan mengelakkan tingkah laku yang tidak dijangka dalam pangkalan kod anda.

Atas ialah kandungan terperinci Mengapakah Nesting `async/waiit` dalam Promise Constructors sebagai Anti-Corak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan