Rumah > Artikel > hujung hadapan web > Nodejs melaksanakan baris gilir kelewatan
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.
Terdapat dua cara yang biasa digunakan untuk melaksanakan baris gilir kelewatan dalam Node.js:
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.
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.
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.
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!