Rumah  >  Artikel  >  hujung hadapan web  >  Nodejs melaksanakan baris gilir kelewatan

Nodejs melaksanakan baris gilir kelewatan

WBOY
WBOYasal
2023-05-25 13:28:38927semak imbas

Node.js melaksanakan baris gilir kelewatan

Baris gilir kelewatan merujuk kepada baris gilir yang melaksanakan tugas selepas tempoh masa tertentu. Dalam banyak senario, kita perlu melaksanakan beberapa tugasan pada titik tertentu pada masa hadapan, seperti pelaksanaan tugas berjadual. Dalam Node.js, kita boleh menggunakan baris gilir kelewatan untuk mencapai keperluan tersebut. Artikel ini akan memperkenalkan cara menggunakan Node.js untuk melaksanakan baris gilir kelewatan.

  1. Kaedah pelaksanaan

Terdapat dua cara yang biasa digunakan untuk melaksanakan baris gilir kelewatan dalam Node.js:

  • Gunakan fungsi setTimeout
  • Gunakan fungsi setInterval

Apabila menggunakan fungsi setTimeout, kita boleh menggunakan panggilan rekursif untuk mencapai pelaksanaan tertunda. Khususnya, selepas setiap tugasan dilaksanakan, kelewatan tugasan seterusnya dikira berdasarkan perbezaan masa tugasan seterusnya, dan kemudian fungsi setTimeout digunakan untuk melaksanakan tugasan seterusnya.

Apabila menggunakan fungsi setInterval, kita perlu menggunakan pemasa untuk merekodkan masa mula setiap tugas, mengira masa mula tugas seterusnya, dan kemudian mengira kelewatan tugas seterusnya berdasarkan perbezaan masa .

Artikel ini terutamanya memperkenalkan kaedah pelaksanaan kaedah pertama, iaitu menggunakan fungsi setTimeout untuk melaksanakan baris gilir kelewatan.

  1. Kod pelaksanaan

Berikut ialah pelaksanaan kod menggunakan fungsi setTimeout untuk melaksanakan baris gilir kelewatan:

const tasks = [];
let delay = 0;

const schedule = (task, time) => {
  tasks.push(() => {
    setTimeout(() => {
      console.log(`${new Date()} - Task ${task} executed`);
    }, time);
  });
};

const runTasks = () => {
  if (!tasks.length) {
    console.log('All tasks completed');
    return;
  }

  const task = tasks.shift();
  task();
  delay += 1000;
  setTimeout(runTasks, delay);
};

schedule(1, 1000);
schedule(2, 5000);
schedule(3, 3000);

runTasks();

Dalam kod di atas, kita mula-mula tentukan Array tasks, digunakan untuk menyimpan tugasan yang perlu ditangguhkan. Kemudian pembolehubah delay ditakrifkan untuk merekodkan jumlah masa kelewatan tugasan supaya tugasan seterusnya boleh ditangguhkan dengan betul.

Seterusnya, kami mentakrifkan fungsi schedule untuk menambah tugasan pada tatasusunan tasks dan mengira masa tunda tugas berdasarkan perbezaan masa.

Akhir sekali, kami mentakrifkan fungsi runTasks untuk melaksanakan tugas tertangguh secara rekursif. Setiap kali tugasan dilaksanakan, kami mula-mula mengeluarkan tugasan pertama daripada tatasusunan tasks dan melaksanakan tugas itu. Pada masa yang sama, tugasan akan ditambahkan pada pembolehubah delay supaya tugasan seterusnya dapat mengira masa tunda dengan betul. Selepas setiap tugasan dilaksanakan, kami akan menggunakan fungsi setTimeout untuk melaksanakan tugasan seterusnya dan masa tunda ialah nilai delay semasa.

  1. Kod ujian

Berikut ialah kod ujian untuk menguji kod di atas:

console.log(`${new Date()} - Start`);

const tasks = [];
let delay = 0;

const schedule = (task, time) => {
  tasks.push(() => {
    setTimeout(() => {
      console.log(`${new Date()} - Task ${task} executed`);
    }, time);
  });
};

const runTasks = () => {
  if (!tasks.length) {
    console.log('All tasks completed');
    return;
  }

  const task = tasks.shift();
  task();
  delay += 1000;
  setTimeout(runTasks, delay);
};

schedule(1, 1000);
schedule(2, 5000);
schedule(3, 3000);

runTasks();

Dalam kod ujian di atas, kami menggunakan console.log fungsi dalam Log tugasan dikeluarkan semasa pelaksanaan untuk mengesahkan bahawa tugasan dilaksanakan seperti yang diharapkan.

  1. Ringkasan

Melalui pengenalan dan pelaksanaan kod di atas, kami memahami cara menggunakan fungsi setTimeout untuk melaksanakan baris gilir kelewatan dalam Node.js. Menggunakan baris gilir kelewatan boleh membantu kami melaksanakan beberapa senario yang memerlukan pelaksanaan tugas pada masa tertentu pada masa hadapan, seperti tugasan yang dijadualkan, mekanisme cuba semula, dsb. Dalam pembangunan sebenar, kami boleh memilih kaedah pelaksanaan yang sesuai berdasarkan senario tertentu dan menggabungkannya dengan kod ujian untuk mengesahkan sama ada pelaksanaan kami berfungsi seperti yang diharapkan.

Atas ialah kandungan terperinci Nodejs melaksanakan baris gilir kelewatan. 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
Artikel sebelumnya:Konkurensi nodejsArtikel seterusnya:Konkurensi nodejs