Rumah >hujung hadapan web >tutorial js >Patutkah Anda Menunggu Rantai Janji?

Patutkah Anda Menunggu Rantai Janji?

DDD
DDDasal
2024-11-25 13:32:11485semak imbas

Should You Await Promise Chains?

Menunggu Rantaian Janji: Kemungkinan Perangkap

Telah dinasihatkan supaya tidak menunggu rantai janji dalam konteks tertentu, terutamanya dalam aplikasi Angular 6. Pendekatan yang kelihatan berlebihan ini menimbulkan persoalan tentang kemungkinan akibatnya.

Isu dengan Janji Rantai

Coretan kod berikut menunjukkan anti-pola yang dimaksudkan:

await someFunction().then(result => {
    console.log(result);
});

Kod ini tidak semestinya membungkus janji yang dikembalikan oleh someFunction() dalam Janji.kemudian berantai sebelum menunggunya.

Penyelesaian Alternatif

Pendekatan yang lebih ringkas dan mudah ialah dengan hanya menunggu janji secara langsung:

const result = await someFunction();
console.log(result);

Kenapa Mengelak Janji Merantai?

Sementara kedua-dua coretan mencapai hasil yang sama, yang pertama mengundang kekeliruan dan potensi pepijat:

  • Kejelasan yang Dikurangkan: Percampuran menanti dan dirantai janji boleh menghalang kebolehbacaan.
  • Ralat Tidak Konsisten Pengendalian: Tidak jelas cara mengendalikan ralat dalam coretan pertama.
  • Aliran Kawalan Terhad: Pulangan bersyarat atau panggilan janji tambahan dalam panggilan balik berantai boleh menimbulkan kesamaran dan merumitkan logik kod .

Konsistensi ialah Kunci

Demi mengekalkan konsistensi dan mengelakkan kemungkinan perangkap, adalah dinasihatkan untuk memilih pendekatan yang lebih mudah iaitu menunggu janji secara langsung. Ini sejajar dengan peraturan am iaitu memilih menunggu lebih daripada itu dalam fungsi tak segerak.

Pengecualian kepada Peraturan

Walaupun menunggu lebih disukai, mungkin terdapat pengecualian. Dalam kes pengendalian ralat tertentu, rantaian janji mungkin memberikan pendekatan yang lebih bersih dan ringkas.

Atas ialah kandungan terperinci Patutkah Anda Menunggu Rantai Janji?. 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