برنامه نویسی

یادگیری Node.js در 30 روز با هوش مصنوعی – روز 4

Summarize this content to 400 words in Persian Lang
امروز با کمک ChatGPT به یادگیری Node.js ادامه دادم و روی برنامه نویسی ناهمزمان تمرکز کردیم. این یکی از مهمترین مفاهیم در Node.js است و من هیجان زده هستم که شروع به تسلط بر آن کردم.

نظریهدر Node.js، برنامه نویسی ناهمزمان به دلیل معماری رویداد محور غیر مسدود کننده آن بسیار مهم است. این بدان معنی است که عملیاتی مانند خواندن فایل، پرس و جوهای پایگاه داده یا درخواست های شبکه، اجرای کدهای دیگر را در زمان انتظار برای نتیجه مسدود نمی کند.

ما سه راه اصلی برای مدیریت عملیات ناهمزمان را بررسی کردیم:

تماس های تلفنی: توابع به عنوان آرگومان به توابع دیگر ارسال می شوند که پس از تکمیل یک عملیات ناهمزمان اجرا می شوند.

const fs = require(‘fs’);

fs.readFile(‘example.txt’, ‘utf8’, (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});

وعده ها: اشیایی که نشان دهنده تکمیل (یا شکست) نهایی یک عملیات ناهمزمان و مقدار حاصل از آن هستند. Promises امکان زنجیره‌بندی را فراهم می‌کند و کد را در مقایسه با تماس‌های تودرتو خواناتر می‌کند.

const fs = require(‘fs’).promises;

fs.readFile(‘example.txt’, ‘utf8’)
.then(data => {
console.log(data);
})
.catch(err => {
console.error(err);
});

Async/Await: قند نحوی بر روی Promises ساخته شده است که امکان نوشتن کد ناهمزمان را به روشی همزمان فراهم می کند.

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/wait نوشتم که محتوای یک فایل را می خواند و آن را در کنسول ثبت می کند. اگر خطایی رخ دهد (به عنوان مثال، فایل پیدا نشد)، باید خطا را دریافت کرده و آن را ثبت کند.

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

امروز با کمک ChatGPT به یادگیری Node.js ادامه دادم و روی برنامه نویسی ناهمزمان تمرکز کردیم. این یکی از مهمترین مفاهیم در 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. وعده ها: اشیایی که نشان دهنده تکمیل (یا شکست) نهایی یک عملیات ناهمزمان و مقدار حاصل از آن هستند. Promises امکان زنجیره‌بندی را فراهم می‌کند و کد را در مقایسه با تماس‌های تودرتو خواناتر می‌کند.

    const fs = require('fs').promises;
    
    fs.readFile('example.txt', 'utf8')
        .then(data => {
            console.log(data);
        })
        .catch(err => {
            console.error(err);
        });
    
  3. Async/Await: قند نحوی بر روی Promises ساخته شده است که امکان نوشتن کد ناهمزمان را به روشی همزمان فراهم می کند.

    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/wait نوشتم که محتوای یک فایل را می خواند و آن را در کنسول ثبت می کند. اگر خطایی رخ دهد (به عنوان مثال، فایل پیدا نشد)، باید خطا را دریافت کرده و آن را ثبت کند.

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا