يعمل Node.js على بنية تعتمد على الأحداث ذات ترابط واحد، مما يعني أنه يمكنه التعامل مع العديد من العمليات في وقت واحد دون حظر الخيط الرئيسي. يعد هذا أمرًا بالغ الأهمية لإنشاء تطبيقات قابلة للتطوير حيث يجب تنفيذ مهام مثل عمليات الإدخال/الإخراج (قراءة الملفات والاستعلام عن قواعد البيانات وما إلى ذلك) بشكل غير متزامن لتجنب حظر تنفيذ تعليمات برمجية أخرى.
يتم تنفيذ التعليمات البرمجية المتزامنة خطوة واحدة في كل مرة، مما يعني أنه يجب إكمال كل خطوة قبل الانتقال إلى الخطوة التالية. يمكن أن يؤدي هذا إلى حظر الخيط الرئيسي إذا كانت العمليات بطيئة (على سبيل المثال، قراءة ملف كبير أو الاستعلام عن قاعدة بيانات).
مثال (الكود المتزامن):
const fs = require('fs'); const data = fs.readFileSync('file.txt', 'utf8'); console.log(data);
من ناحية أخرى، لا يمنع الكود غير المتزامن الخيط الرئيسي. بدلاً من انتظار اكتمال العملية، يستمر البرنامج في التنفيذ ويتعامل مع نتيجة العملية غير المتزامنة عندما تصبح جاهزة.
مثال (الكود غير المتزامن):
const fs = require('fs'); // Call Back fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); console.log('This will log before the file content!');
غير متزامن / انتظار
تم تقديم async/await في ES2017 (Node.js 7.6)، وهو سكر نحوي مبني على الوعود. فهو يسمح بكتابة التعليمات البرمجية غير المتزامنة بطريقة تشبه المزامنة، مما يجعلها أكثر قابلية للقراءة وأسهل للصيانة.
مثال (غير متزامن/انتظار):
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();ملخص
شكرًا لك على القراءة، وسعيدة بالبرمجة! ?
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3