Rumah >hujung hadapan web >tutorial js >Adakah Memecat dan Melupakan Janji dalam Node.js Boleh Diterima?

Adakah Memecat dan Melupakan Janji dalam Node.js Boleh Diterima?

Linda Hamilton
Linda Hamiltonasal
2024-11-30 18:39:11301semak imbas

Is Firing and Forgetting Promises in Node.js Acceptable?

Lakukan dan Lupakan Janji dalam Node.js (ES7)

Pengaturcaraan tak segerak dalam Node.js selalunya melibatkan kerja dengan janji. Janji mewakili penyiapan atau kegagalan operasi tak segerak. Dalam senario tertentu, anda mungkin mahu memulakan operasi tak segerak tanpa menunggu selesai. Ini dirujuk sebagai "menembak dan melupakan" janji.

Pertimbangkan coretan kod berikut:

redisClientAsync.delAsync('key');
return await someOtherAsyncFunction();

Di dalam fungsi async, anda boleh melaksanakan baris pertama tanpa menggunakan await. Ini mewujudkan janji dan segera membuangnya.

Adakah Ini Boleh Diterima?

Ya, adalah mungkin untuk melaksanakan tugas tak segerak dengan cara ini. Dengan menembak dan melupakan janji, dua fungsi tak segerak (penciptaan janji dan fungsi someOtherAsyncFunction) akan dilaksanakan secara serentak.

Mengendalikan Ralat

Satu isu yang berpotensi dengan pendekatan ini ialah bahawa jika janji yang dibuat oleh delAsync ditolak, anda tidak akan dimaklumkan. Ini boleh membawa kepada penolakan yang tidak dikendalikan yang akhirnya merosakkan proses anda.

Alternatif untuk Mengabaikan Keputusan

Jika anda tidak mengambil berat tentang hasil operasi tak segerak, terdapat beberapa cara untuk mengendalikannya:

  • Batal Operator: Gunakan operator void untuk membuang hasil:

    void (await someAsyncFunction());
  • Tangkap dan Abaikan: Abaikan pengecualian dengan menggunakan kaedah tangkapan dengan pengendali kosong :

    ... someAsyncFunction().catch(function ignore() {}) ...
  • Sejajar Perlaksanaan: Jika anda masih mahu menunggu operasi tak segerak lain tetapi tidak mengambil berat tentang hasil operasi tertentu, gunakan Promise.all dengan tatasusunan:

    var [_, res] = await Promise.all([
      someAsyncFunction(), // result is ignored, exceptions aren't
      someOtherAsyncFunction()
    ]);
    return res;

Kesimpulan

Walaupun mungkin untuk melepaskan dan melupakan janji dalam Node.js, adalah penting untuk mengetahui potensi risiko yang berkaitan dengan mengabaikan penolakan. Pertimbangkan dengan teliti sama ada anda benar-benar tidak mengambil berat tentang hasil operasi tak segerak sebelum menggunakan teknik ini. Selain itu, terdapat pendekatan alternatif yang tersedia untuk mengendalikan hasil yang tidak diminati.

Atas ialah kandungan terperinci Adakah Memecat dan Melupakan Janji dalam Node.js Boleh Diterima?. 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