Mari kita lihat apa operasi pemblokiran;
Saya mensimulasikan metode tidur () untuk menunda cetak Hello Star selama 10 detik.
requesthandlers.js
Salinan kode adalah sebagai berikut:
fungsi start () {
console.log ("permintaan pawang 'start' dipanggil.");
function sleep (milidonds) {
var startTime = new date (). getTime ();
while (new date (). getTime () <startTime + Millionseconds);
}
tidur (10000);
Kembalikan "Hello Start";
}
function unggah () {
console.log ("unggahan unggahan 'pawang' dipanggil.");
mengembalikan "Hello unggah";
}
Exports.start = Mulai;
Exports.upload = unggah;
Saat meminta /memulai, itu ditunda 10 detik sebelum dicetak.
Saat meminta/mengunggah, itu tidak akan terpengaruh.
Selanjutnya, lakukan percobaan:
Masukkan http: // localhost: 8888/mulai di bilah alamat jendela browser pertama, tetapi jangan buka terlebih dahulu!
Masukkan http: // localhost: 8888/Unggah di bilah alamat jendela browser kedua. Demikian pula, jangan buka dulu!
Kami menekan enter di jendela pertama ("/start") dan dengan cepat beralih ke jendela kedua ("/unggah") dan tekan Enter.
Catatan, apa yang terjadi:
URL /start membutuhkan waktu 10 detik untuk memuat, yang sama seperti yang kami harapkan.
URL /unggah sebenarnya memakan waktu 10 detik!
Tetapi tidak memiliki operasi yang mirip dengan tidur () di pawang permintaan yang sesuai. Apa masalahnya?
Alasannya adalah start () termasuk operasi pemblokiran. Sederhananya, "itu menghalangi semua pekerjaan pemrosesan lainnya."
Node.js adalah satu utas, dan dapat memproses tugas secara paralel tanpa menambahkan utas tambahan.
Ini mengimplementasikan operasi paralel melalui loop peristiwa, dan kita harus memanfaatkan sepenuhnya ini - hindari operasi pemblokiran sebanyak mungkin, sebaliknya, lebih sering menggunakan operasi non -blocking.
Di bagian selanjutnya, kami akan memperkenalkan cara menerapkan operasi non-blocking.