Rumah > hujung hadapan web > tutorial js > Jenis Baris Tertinggi dalam Node.js Yang Perlu Anda Ketahui

Jenis Baris Tertinggi dalam Node.js Yang Perlu Anda Ketahui

Susan Sarandon
Lepaskan: 2025-01-09 14:24:42
asal
628 orang telah melayarinya

Top ypes of Queues in Node.js You Should Know

Pengenalan

Node.js diraikan secara meluas kerana seni bina tak segerak yang tidak menyekat, menjadikannya pilihan ideal untuk aplikasi web berskala dan berprestasi. Salah satu sebab utama di sebalik keupayaan ini ialah model dipacu peristiwa dan pengendalian tugas yang cekap melalui gelung acaranya. Memahami ketaksinkronan Node.js memerlukan menyelidiki baris gilir yang menggerakkan sistem ini. Menariknya, Node.js menggunakan enam baris gilir yang berbeza untuk pengurusan tugas, berbanding dengan dua baris gilir utama yang terdapat dalam pelayar. Mari terokai ini secara terperinci.


Enam Baris Gilir dalam Node.js

Node.js mempunyai mekanisme yang canggih untuk mengendalikan tugasan menggunakan enam baris gilir:

  1. Barisan Pemasa

    • Tujuan: Mengendalikan tugas yang dijadualkan dengan setTimeout dan setInterval.
    • Contoh:
     setTimeout(() => {
       console.log('Timer task executed');
     }, 1000);
    
    Salin selepas log masuk
    Salin selepas log masuk
  • Tugas dalam Baris Gilir Pemasa dilaksanakan selepas kelewatan yang ditentukan, tetapi tidak sebelum fasa semasa gelung acara selesai.
  1. Barisan I/O (Barisan Panggilan Balik)

    • Tujuan: Memproses tugas berkaitan I/O, seperti membaca fail atau mengendalikan permintaan rangkaian.
    • Contoh:
     const fs = require('fs');
    
     fs.readFile('file.txt', 'utf8', (err, data) => {
       if (err) throw err;
       console.log(data);
     });
    
    Salin selepas log masuk
  • Baris Gilir I/O memastikan panggilan balik dilaksanakan sebaik sahaja operasi I/O selesai.
  1. Semak Baris Berbaris

    • Tujuan: Melaksanakan tugas yang dijadualkan menggunakan setImmediate().
    • Contoh:
     setImmediate(() => {
       console.log('Check Queue task executed');
     });
    
    Salin selepas log masuk
  • Nota: Baris Gilir Semak mempunyai salah satu keutamaan paling rendah dalam gelung acara. Tugasan dalam baris gilir ini diproses selepas fasa I/O.
  1. Baris Gilir Tugasan Mikro
    • Tujuan: Melaksanakan tugas keutamaan tinggi, terutamanya berkaitan janji dan tugas mikro lain.
    • Subkategori:
      • a. process.nextTick Queue:
      • Mengendalikan tugas yang dijadualkan dengan process.nextTick().
      • Tugas dalam baris gilir ini diberi keutamaan tertinggi dan dilaksanakan sebelum sebarang tugasan mikro lain.
      • b. Baris Berpisah untuk Janji Lain:
      • Mengendalikan tugas yang berkaitan dengan janji yang diselesaikan.
process.nextTick(() => {
           console.log('process.nextTick task executed');
         });
Promise.resolve().then(() => {
           console.log('Promise resolved task executed');
         });
Salin selepas log masuk
  • Baris Gilir Microtask sentiasa berjalan sehingga selesai sebelum beralih ke fasa seterusnya gelung acara.
  1. Tutup Baris Gilir

    • Tujuan: Mengendalikan tugas yang berkaitan dengan operasi penutupan, seperti acara socket.on('close').
    • Contoh:
     setTimeout(() => {
       console.log('Timer task executed');
     }, 1000);
    
    Salin selepas log masuk
    Salin selepas log masuk
  • Tugas dalam Baris Tutup Dilaksanakan apabila sumber ditutup secara eksplisit.

Cara Gelung Acara Mengutamakan Baris Gilir

Gelung peristiwa dalam Node.js mengikut urutan fasa tertentu untuk melaksanakan tugas. Berikut ialah urutan keutamaan:

  1. Microtask Queue (process.nextTick): Tugasan dalam baris gilir ini sentiasa dilaksanakan dahulu.
  2. Baris Gilir Tugasan Mikro (Janji): Setelah tugasan process.nextTick selesai, tugasan dalam baris gilir Janji dilaksanakan.
  3. Barisan Pemasa: Tugasan yang dijadualkan dengan setTimeout atau setInterval diproses dalam fasa ini.
  4. Baris Gilir I/O: Mengendalikan operasi I/O yang lengkap.
  5. Semak Baris: Melaksanakan tugasan daripada setImmediate.
  6. Tutup Baris Gilir: Memproses tutup panggilan balik untuk sumber.

Perbandingan dengan Penyemak Imbas

Sebaliknya, penyemak imbas mempunyai model gelung acara yang lebih ringkas dengan hanya dua baris gilir utama:

  1. Baris Gilir Tugasan Makro: Mengendalikan tugas seperti setTimeout, setInterval dan acara DOM.
  2. Microtask Queue: Sama seperti Node.js, baris gilir ini mengendalikan tugas seperti Janji yang diselesaikan dan panggilan balik MutationObserver.

Baris gilir tambahan Node.js membolehkannya mengendalikan pelbagai tugas yang lebih luas, menjadikannya lebih sesuai untuk aplikasi sebelah pelayan.


Cerapan Utama

  • SetImmediate vs setTimeout:

    • Semasa setTimeout menambah tugasan pada Giliran Pemasa, tetapkan baris gilir segera tugas dalam Baris Gilir Semak.
    • Tugas dalam Baris Gilir Semak (melalui setImmediate) dilaksanakan selepas fasa I/O semasa, manakala setTimeout menunggu fasa pemasa.
  • Penguasaan Tugasan Mikro:

    • Tugas dalam Gilir Microtask, terutamanya process.nextTick, sentiasa diutamakan, membolehkan pelaksanaan keutamaan tinggi.
  • Keselarasan Tanpa Kekacauan:

    • Baris gilir yang berasingan memastikan jenis tugasan yang berbeza dikendalikan dengan cara yang teratur dan boleh diramalkan, mengelakkan kebuluran tugasan yang lebih rendah keutamaannya.

Rujukan:-

  1. https://frontendmasters.com/courses/servers-node-js/

Atas ialah kandungan terperinci Jenis Baris Tertinggi dalam Node.js Yang Perlu Anda Ketahui. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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