Menu
CoddyTech

دوال الاستدعاء

جزء من قسم أساسيات 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 بينما لا يزال الملف قيد التحميل.

challenge icon

التحدي

سهل

يفتح هذا الدرس مثالًا جديدًا لعدّ العناصر باستخدام دالة ردّ النداء في count.js، بدلًا من ملفات أداة الملاحظات التي أنشأتها في درس معالجة الأخطاء. يتضمن الدرس الملفات notes.json وnotes.js وstore.js؛ ويظل عملك السابق محفوظًا في درسه الخاص.

تستغرق قراءة ملف كبير وقتًا. باستخدام دالة ردّ النداء، يمكن لـ Node إنجاز أعمال أخرى في أثناء ذلك، ثم يستدعي الكود عند جاهزية الملف. تدرّب على ذلك في برنامج صغير مستقل، count.js، يحصي الملاحظات في ملف.

  1. يطبع count.js مسبقًا Reading...، ويعرف الملف الذي سيقرؤه: file هو الكلمة التي تكتبها بعد node count.js، أو notes.json إذا لم تكتب شيئًا.
  2. اقرأ ذلك الملف باستخدام fs.readFile ودالة ردّ نداء. يحدث كل ما يلي داخل دالة ردّ النداء.
  3. إذا نجحت القراءة، حوّل النص إلى مصفوفة باستخدام JSON.parse. اطبع عدد الملاحظات التي تحتويها المصفوفة، متبوعًا بـ notes. احسب الملاحظات في المصفوفة، لا أسطر الملف. يبدأ notes.json بملاحظتين، لذا اطبع 2 notes.
  4. إذا فشلت القراءة، أي إذا لم يكن الخطأ في دالة ردّ النداء null، فاطبع Cannot read متبوعًا باسم الملف بدلًا من العدد.
  5. في كلتا الحالتين، اطبع 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.
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس أساسيات Node.js

تدرّب بنفسك: Playground لـ Express