Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Melaksanakan Fungsi Tidak Menyekat dengan betul dalam Node.js?

Bagaimanakah Saya Boleh Melaksanakan Fungsi Tidak Menyekat dengan betul dalam Node.js?

Patricia Arquette
Lepaskan: 2024-12-09 10:10:09
asal
338 orang telah melayarinya

How Can I Correctly Implement Non-Blocking Functions in Node.js?

Pelaksanaan Fungsi Tidak Menyekat yang Betul dalam Node.js

Walaupun terdapat salah tanggapan, hanya membungkus kod dalam Promise tidak menjadikannya tidak -menyekat. Fungsi pelaksana Janji, bersifat segerak, menyekat pelaksanaan. Inilah sebab kelewatan diperhatikan dalam kod yang disediakan sebelum mencetak baris berikutnya.

Masalah dengan Kod yang Diberikan

Kod pada mulanya nampaknya tidak menyekat , menggunakan Janji untuk mengembalikan hasil longRunningFunc yang intensif secara pengiraan. Walau bagaimanapun, selepas pelaksanaan, kami melihat kelewatan sebelum baris kedua dan ketiga dicetak, menunjukkan bahawa program sedang menunggu Janji untuk diselesaikan.

Kod Tidak Sekat Benar dalam Node.js

Untuk mencipta kod yang benar-benar tidak menyekat dalam Node.js, kami mempunyai beberapa pilihan:

  • Proses Anak: Jalankan kod dalam proses anak yang berasingan, terima pemberitahuan tak segerak setelah selesai.
  • Benang Pekerja (Nod. js v11 ): Manfaatkan Benang Pekerja percubaan yang diperkenalkan Node.js v11.
  • Tambah Kod Asli: Bangun alat tambah asli tersuai menggunakan urutan libuv atau peringkat OS.
  • Memanfaatkan API Tak Segerak Sedia Ada : Bina di atas API tak segerak sedia ada, mengelakkan pelaksanaan kod yang berpanjangan dalam utas utama.

Menyemak Contoh

Walaupun membungkus kod dalam Promise tidak mencukupi untuk kelakuan tidak menyekat, kita boleh menggunakan setTimeout() untuk menjadualkan gelung bagi untuk pelaksanaan kemudian:

function longRunningFunc(val, mod) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      let sum = 0;
      for (let i = 0; i < 100000; i++) {
        for (let j = 0; j < val; j++) {
          sum += i + j % mod;
        }
      }
      resolve(sum);
    }, 10);
  });
}
Salin selepas log masuk

Pendekatan ini mengalihkan masa gelung untuk, memberikan rupa kelakuan tidak menyekat. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa gelung untuk masih dilaksanakan secara serentak sebaik sahaja dijadualkan. Untuk mencapai kod bukan sekatan sebenar, kami perlu menggunakan salah satu teknik yang diterangkan sebelum ini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Fungsi Tidak Menyekat dengan betul dalam Node.js?. 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