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:
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); }); }
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!