Menu
CoddyTech

قراءتان مستقلتان

جزء من قسم أساسيات Node.js في رحلة Node.js على Coddy. الدرس 24 من 33.

يمكن أن تبدأ عمليتا قراءة معًا عندما لا تحتاج أيٌّ منهما إلى نتيجة الأخرى. يأخذ Promise.all وعودهما ويعيد وعدًا واحدًا لمصفوفة من النتائج. استخدم await لهذه المصفوفة مرة واحدة.

const [name, city] = await Promise.all([
    readFile('name.txt', 'utf8'),
    readFile('city.txt', 'utf8'),
]);

تكون النتيجة الأولى تابعة للوعد الأول، حتى لو انتهت عملية القراءة الثانية قبلها. تُسنِد الأقواس المربعة النتيجتين إلى متغيرين منفصلين. إذا فشلت أي من عمليتي القراءة، يُرفض الوعد الموحّد. استخدم await منفصلًا عندما تحتاج إحدى العمليتين إلى نتيجة العملية السابقة.

يرفض قارئ التدريب المرفق عملية قراءة يُنتظر اكتمالها قبل بدء عملية القراءة الأخرى. وهو يجعل الانتظار المبكر ملحوظًا؛ لكنه لا يقيس سرعة التنفيذ.

challenge icon

التحدي

سهل

هذا مشروع تدريبي صغير. إعداد المشروع جاهز؛ عدّل practice.js فقط.

اقرأ note.txt وowner.txt باستخدام Promise.all. استخدم النتيجتين لطباعة Ada: Buy milk. أبقِ note أولًا في مصفوفة الإدخال. ينفّذ «شغّل» الأمر node practice.js.

استخدم القارئ المستورَد. ابدأ القراءتين قبل الانتظار؛ يرفض هذا القارئ التدريبي عمدًا استخدام تعليمات await المتتابعة.

استخدم القيمتين noteFile وownerFile المقدمتين. شغّل باستخدام other-note.txt other-owner.txt: توقّع Bo: Walk.

جرّب بنفسك

import { readFile } from './reader.js';
const [noteFile = 'note.txt', ownerFile = 'owner.txt'] = process.argv.slice(2);
const note = '';
const owner = '';
console.log(owner + ': ' + note);

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

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