利用 AI 快速學習 Node.js - 第 4 天

PHPz
發布: 2024-08-29 11:31:32
原創
235 人瀏覽過

Learning Node.js in Days with AI - Day 4

今天,我在 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:表示非同步操作最終完成(或失敗)及其結果值的物件。與嵌套回呼相比,Promise 允許連結並使程式碼更具可讀性。

    const fs = require('fs').promises; fs.readFile('example.txt', 'utf8') .then(data => { console.log(data); }) .catch(err => { console.error(err); });
    登入後複製
  3. 非同步/等待:建構在 Promise 之上的語法糖,允許以同步方式編寫非同步程式碼。

    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();
    登入後複製

實際任務

今天,我練習將基於回調的函數轉換為基於 Promise 的函數。

帶回調的原始碼:

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; 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

以上是利用 AI 快速學習 Node.js - 第 4 天的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!