دوال الاستدعاء
جزء من قسم أساسيات Node.js في رحلة Node.js على Coddy. الدرس 18 من 33.
تستغرق قراءة ملف كبير وقتًا، والبرنامج الذي ينتظر انتهاء ذلك لا يفعل أي شيء آخر في هذه الأثناء.
تبدأ fs.readFile(path, 'utf8', callback) القراءة وتعود فورًا. عند تحميل الملف، يستدعي Node دالة رد النداء الخاصة بك مع (err, text). تكون err مساويةً لـ null عند النجاح، وتحتوي على خطأ خلاف ذلك، لذا تحقّق منها أولًا. كل ما يحتاج إلى النص يوضع داخل دالة رد النداء.
import fs from 'node:fs';
fs.readFile('poem.txt', 'utf8', (err, text) => {
if (err) {
console.log('No poem today');
return;
}
console.log(text.split('\n').length + ' lines');
});
console.log('Asked for the poem');تُطبع Asked for the poem أولًا: يُنفَّذ السطر الذي يلي readFile بينما لا يزال الملف قيد التحميل.
التحدي
سهليفتح هذا الدرس مثالًا جديدًا لعدّ العناصر باستخدام دالة ردّ النداء في count.js، بدلًا من ملفات أداة الملاحظات التي أنشأتها في درس معالجة الأخطاء. يتضمن الدرس الملفات notes.json وnotes.js وstore.js؛ ويظل عملك السابق محفوظًا في درسه الخاص.
تستغرق قراءة ملف كبير وقتًا. باستخدام دالة ردّ النداء، يمكن لـ Node إنجاز أعمال أخرى في أثناء ذلك، ثم يستدعي الكود عند جاهزية الملف. تدرّب على ذلك في برنامج صغير مستقل، count.js، يحصي الملاحظات في ملف.
- يطبع
count.jsمسبقًاReading...، ويعرف الملف الذي سيقرؤه:fileهو الكلمة التي تكتبها بعدnode count.js، أوnotes.jsonإذا لم تكتب شيئًا. - اقرأ ذلك الملف باستخدام
fs.readFileودالة ردّ نداء. يحدث كل ما يلي داخل دالة ردّ النداء. - إذا نجحت القراءة، حوّل النص إلى مصفوفة باستخدام
JSON.parse. اطبع عدد الملاحظات التي تحتويها المصفوفة، متبوعًا بـnotes. احسب الملاحظات في المصفوفة، لا أسطر الملف. يبدأnotes.jsonبملاحظتين، لذا اطبع2 notes. - إذا فشلت القراءة، أي إذا لم يكن الخطأ في دالة ردّ النداء
null، فاطبعCannot readمتبوعًا باسم الملف بدلًا من العدد. - في كلتا الحالتين، اطبع
Doneأخيرًا، ومن داخل دالة ردّ النداء أيضًا.
يطبع node count.js ما يلي:
Reading...
2 notes
Doneيطبع node count.js nothere.json ما يلي:
Reading...
Cannot read nothere.json
Doneجرّب ذلك: يشغّل هذا الدرس count.js، لذا تعرض الوحدة الطرفية $ node count.js. اضغط على «تشغيل» بينما المربع فارغ، وسيقرأ البرنامج notes.json. ثم اكتب nothere.json في المربع واضغط على مفتاح Enter لقراءة ملف غير موجود.
جرّب بنفسك
import fs from 'node:fs';
const file = process.argv[2] ?? 'notes.json';
console.log('Reading...');
// اقرأ الملف باستخدام fs.readFile ودالة رد نداء.
// اطبع عدد الملاحظات، ثم Done.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس أساسيات Node.js
1تشغيل JavaScript على Node
مرحبًا يا Nodeقراءة الأمروسائط سطر الأوامرالأوامر4البرمجة غير المتزامنة في Node
استخدام نتيجة دالة الاستدعاءدوال الاستدعاءنتيجة Promiseعندما يفشل Promiseالوعودانتظار قيمةAsync وAwaitقراءتان مستقلتانPromise.allحلقة الأحداثالمؤقتاتتدرّب بنفسك: Playground لـ Express