"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تعلم Node.js في أيام باستخدام الذكاء الاصطناعي - اليوم الرابع

تعلم Node.js في أيام باستخدام الذكاء الاصطناعي - اليوم الرابع

تم النشر بتاريخ 2024-11-05
تصفح:691

Learning Node.js in Days with AI - Day 4

اليوم، واصلت تعلم Node.js بمساعدة ChatGPT، وركزنا على البرمجة غير المتزامنة. يعد هذا أحد أهم المفاهيم في Node.js، وأنا متحمس لأنني بدأت في إتقانه.

نظرية

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

لقد استكشفنا ثلاث طرق رئيسية للتعامل مع العمليات غير المتزامنة:

  1. عمليات الاسترجاعات: تم تمرير الوظائف كوسائط لوظائف أخرى، والتي يتم تنفيذها بمجرد اكتمال العملية غير المتزامنة.

    const fs = require('fs');
    
    fs.readFile('example.txt', 'utf8', (err, data) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log(data);
    });
    
  2. الوعود: الكائنات التي تمثل الإكمال (أو الفشل) النهائي لعملية غير متزامنة وقيمتها الناتجة. تسمح الوعود بالتسلسل وتجعل التعليمات البرمجية أكثر قابلية للقراءة مقارنة بعمليات الاسترجاعات المتداخلة.

    const fs = require('fs').promises;
    
    fs.readFile('example.txt', 'utf8')
        .then(data => {
            console.log(data);
        })
        .catch(err => {
            console.error(err);
        });
    
  3. Async/Await: سكر نحوي مبني على الوعود التي تسمح بكتابة تعليمات برمجية غير متزامنة بطريقة متزامنة.

    const fs = require('fs').promises;
    
    async function readFile() {
        try {
            const data = await fs.readFile('example.txt', 'utf8');
            console.log(data);
        } catch (err) {
            console.error(err);
        }
    }
    
    readFile();
    

المهمة العملية

لقد تدربت اليوم على تحويل دالة تعتمد على رد الاتصال إلى دالة تعتمد على الوعد.

الكود الأصلي مع رد الاتصال:

const fs = require('fs');

function readFileCallback(path, callback) {
    fs.readFile(path, 'utf8', (err, data) => {
        if (err) {
            callback(err);
            return;
        }
        callback(null, data);
    });
}

readFileCallback('example.txt', (err, data) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(data);
});

التحويل إلى الوعود:

const fs = require('fs').promises;

function readFilePromise(path) {
    return fs.readFile(path, 'utf8');
}

readFilePromise('example.txt')
    .then(data => {
        console.log(data);
    })
    .catch(err => {
        console.error(err);
    });

مهمة مستقلة
لقد كتبت أيضًا وظيفة غير متزامنة باستخدام async/await تقرأ محتوى الملف وتسجله في وحدة التحكم. إذا حدث خطأ (على سبيل المثال، لم يتم العثور على الملف)، فيجب اكتشاف الخطأ وتسجيله.

const fs = require('fs').promises; وظيفة غير متزامنة readFileAsync(path) { يحاول { بيانات const = انتظار fs.readFile(path, 'utf8'); console.log(data); } مسك (يخطئ) { console.error(err); } } readFileAsync('example.txt');
const fs = require('fs').promises;

async function readFileAsync(path) {
    try {
        const data = await fs.readFile(path, 'utf8');
        console.log(data);
    } catch (err) {
        console.error(err);
    }
}

readFileAsync('example.txt');

موارد
يمكن العثور على جميع الدروس التي تم إنشاؤها بواسطة ChatGPT على: https://king-tri-ton.github.io/learn-nodejs

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/king_triton/learning-nodejs-in-30-days-with-ai-day-4-3o69?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3