Menu
CoddyTech

Callbacks

חלק מהיחידה יסודות Node.js במסלול ה-Node.js של Coddy. שיעור 18 מתוך 33.

קריאת קובץ גדול אורכת זמן, ותוכנית שממתינה לו לא עושה בינתיים שום דבר אחר.

fs.readFile(path, 'utf8', callback) מתחילה את הקריאה וחוזרת מיד. כשהקובץ נטען, Node קוראת לפונקציית callback שלך עם (err, text). err היא null במקרה של הצלחה, ומכילה שגיאה אחרת, לכן בדוק אותה תחילה. כל מה שזקוק לטקסט צריך להיכלל בתוך פונקציית callback.

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

אתגר

קל

בשיעור הזה נפתח דוגמה חדשה לספירה באמצעות callback בקובץ count.js, ולא בקובצי כלי ההערות שלך מהשיעור טיפול בשגיאות. הקבצים שסופקו, notes.json, notes.js ו-store.js, כלולים; העבודה הקודמת שלך נשארת שמורה בשיעור משלה.

קריאה של קובץ גדול אורכת זמן. עם callback, ‏Node יכול לבצע בינתיים עבודה אחרת, ולקרוא לקוד שלך בחזרה כשהקובץ מוכן. תרגל את זה בתוכנית קטנה ונפרדת, count.js, שסופרת את ההערות בקובץ.

  1. count.js כבר מדפיס את Reading... ויודע איזה קובץ לקרוא: file הוא המילה שמקלידים אחרי node count.js, או notes.json אם לא מקלידים דבר.
  2. קרא את הקובץ הזה באמצעות fs.readFile ו-callback. כל מה שמופיע בהמשך מתרחש בתוך ה-callback.
  3. אם הקריאה הצליחה, הפוך את הטקסט למערך באמצעות JSON.parse. הדפס כמה הערות יש במערך, ואחריהן notes. ספור את ההערות במערך, ולא את שורות הקובץ. הקובץ notes.json מתחיל עם שתי הערות, לכן תדפיס 2 notes.
  4. אם הקריאה נכשלה, כלומר השגיאה של ה-callback אינה null, הדפס Cannot read ואחריו את שם הקובץ, במקום את מספר ההערות.
  5. בשני המקרים, הדפס את Done בסוף, גם כן מתוך ה-callback.

הפקודה node count.js מדפיסה:

Reading...
2 notes
Done

הפקודה node count.js nothere.json מדפיסה:

Reading...
Cannot read nothere.json
Done

נסה זאת: השיעור הזה מריץ את count.js, לכן הטרמינל מציג $ node count.js. לחץ על Run כשהתיבה ריקה, והתוכנית תקרא את notes.json. לאחר מכן הקלד nothere.json בתיבה ולחץ על Enter, כדי לקרוא קובץ שאינו קיים.

נסו בעצמכם

import fs from 'node:fs';

const file = process.argv[2] ?? 'notes.json';

console.log('Reading...');
// קראו את הקובץ באמצעות fs.readFile ופונקציית callback.
// הדפיסו את מספר ההערות, ואז Done.
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות Node.js

תרגלו בעצמכם: Express אונליין