Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menulis Fungsi Benar-Benar Tidak Menyekat dalam Node.js?
Cara Yang Betul untuk Menulis Fungsi Tidak Menghalang dalam Node.js
Paradigma tidak menyekat adalah penting dalam Node.js untuk mencapai prestasi tinggi. Walau bagaimanapun, ia boleh mencabar untuk menulis fungsi yang benar-benar tidak menyekat yang tidak menghalang kemajuan gelung acara.
Memahami Tingkah Laku Tidak Menghalang
Membungkus kod dalam Janji tidak semestinya menjadikannya tidak menyekat. Fungsi pelaksana Promise dilaksanakan secara serentak, bermakna kod yang berjalan lama di dalamnya akan menyekat pelaksanaan operasi lain.
Contoh: Fungsi Penyekatan yang Dibungkus Janji
Pertimbangkan fungsi berikut:
function longRunningFunc(val, mod) { return new Promise((resolve, reject) => { let sum = 0; for (let i = 0; i < 100000; i++) { for (let j = 0; j < val; j++) { sum += i + j % mod; } } resolve(sum); }); }
Semasa fungsi ini kembali Janji, kod dalam pelaksana disekat. Gelung peristiwa akan menunggu sehingga kod ini selesai sebelum melaksanakan operasi lain.
Mensimulasikan Asynchronicity dengan setTimeout
Satu pendekatan untuk meniru tingkah laku tidak menyekat dalam kes ini ialah menggunakan setTimeout:
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); }); }
Kod ini menjadualkan gelung jangka panjang untuk dilaksanakan selepas kelewatan 10 milisaat. Walau bagaimanapun, ia masih menyekat dalam tempoh pelaksanaan yang tertangguh itu.
Pendekatan Tidak Menghalang Sebenar
Untuk mencipta fungsi yang benar-benar tidak menyekat, anda perlu menggunakan teknik yang memindahkan kod pelaksanaan di luar Node.js utama benang:
Atas ialah kandungan terperinci Bagaimana untuk Menulis Fungsi Benar-Benar Tidak Menyekat dalam Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!