Dalam konteks tak segerak, janji membenarkan pembangun melaksanakan tugas tanpa menyekat benang utama. Walau bagaimanapun, kebimbangan timbul apabila anda ingin memulakan operasi tak segerak tetapi tidak memerlukan keputusannya atau mengendalikan kemungkinan ralatnya.
Bolehkah anda hanya memanggil redisClientAsync.delAsync('key') tanpa menunggunya atau menggunakan panggilan balik? Selain itu, adakah boleh diterima untuk melaksanakan fungsi tak segerak ini bersama satu lagi dalam fungsi tak segerak tanpa menunggu yang pertama?
Adalah mungkin untuk memulakan dua operasi tak segerak secara serentak dengan menjalankan yang pertama tanpa menunggunya. Walau bagaimanapun, pendekatan ini mempunyai kelemahannya:
1. Risiko Penolakan Tidak Terkendali:
Jika janji pertama ditolak, anda tidak akan dimaklumkan kerana anda tidak menunggunya. Ini boleh menyebabkan penolakan yang tidak dikendalikan, yang boleh merosakkan proses anda jika tidak dikendalikan dengan betul.
2. Gelagat Tidak Ditakrifkan:
Anda harus mentakrifkan niat anda secara eksplisit apabila berurusan dengan operasi tak segerak. Anda tidak disyorkan untuk memulakan tugas tak segerak tanpa menyatakan sama ada anda berhasrat untuk menunggu keputusannya, mengendalikan ralatnya atau mengabaikannya sepenuhnya.
Bergantung pada keperluan khusus anda, ada terdapat beberapa pilihan yang tersedia:
1. Tunggu Keputusan tetapi Abaikan Nilai:
Jika anda ingin menunggu kesan sampingan tetapi tidak memerlukan hasilnya, anda boleh membuangnya menggunakan void (tunggu someAsyncFunction()).
2. Abaikan Ralat:
Jika anda tidak bimbang tentang ralat, anda boleh menggunakan someAsyncFunction().catch(function ignore() {}) untuk menolaknya.
3. Laksanakan Secara Selari:
Jika anda ingin melaksanakan berbilang tugas tak segerak secara serentak dan mengendalikan keputusan, anda boleh menggunakan Promise.all seperti berikut:
const [_, res] = await Promise.all([ someAsyncFunction(), // result is ignored, exceptions aren't someOtherAsyncFunction() ]); return res;
Dengan menggunakan teknik ini, anda boleh dengan berkesan mengendalikan operasi tak segerak dalam Node.js (ES7) berdasarkan keperluan khusus anda.
Atas ialah kandungan terperinci Patutkah Saya Abaikan Janji dalam Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!