1. 實踐練習之fs模塊 & node運行Js腳本
fs是Node.js下面對檔案進行操作的一個模塊,Node.js 提供一組類似 UNIX(POSIX)標準的檔案操作 API, Node 匯入檔案系統模塊(fs),Node.js 檔案系統(fs 模塊)模塊中的方法均有異步和同步版本,例如讀取檔案內容的函式有異步的 fs.readFile() 和同步的 fs.readFileSync(),異步的方法函式最后一個引數為回呼函式,回呼函式的第一個引數包含了錯誤資訊(error),最好使用異步方法,比起同步,異步方法性能更高,速度更快,而且沒有阻塞(重點),對于流量較大的服務器,最好還是采用異步操作,同步操作時,只有前一個操作結束,才會開始后一個操作,如果某個操作特別耗時(常常發生在讀寫資料時),會導致整個程式停頓,
1.1 回呼函式 形式
準備作業:準備一個文本檔案,待會會讀取他的內容,

content.txt
觀書有感
作者:朱熹
半畝方塘一鑒開,天光云影共徘徊,
問渠那得清如許?為有源頭活水來
Js代碼:
2-Promise實踐練習-fs模塊.js
// 宣告fs模塊
const fs = require('fs');
//回呼函式 形式
fs.readFile('./promise/resource/content.txt', (err, data) => {
// 如果出錯 則拋出錯誤
if (err) {
throw err
} else {
//輸出檔案內容
console.log(data.toString());
}
});
Node運行Js腳本:
node promise\2-Promise實踐練習-fs模塊.js

1.2 Promise 形式
Js代碼:
2-Promise實踐練習-fs模塊.js
// 宣告fs模塊
const fs = require('fs');
//Promise 形式
new Promise((resolve, reject) => {
fs.readFile('./promise/resource/content.txt', (err, data) => {
//如果出錯 失敗和成功的回呼函式只會執行一個,
if (err) reject(err);
//如果成功
resolve(data);
});
}).then(value => {
// 如果成功,列印txt檔案的內容
console.log(value.toString());
}, reason => {
// 如果成功,列印失敗的原因
console.log(reason);
});
Node運行Js腳本:
node promise\2-Promise實踐練習-fs模塊.js

1.3 Promise封裝練習-fs模塊
Js代碼:
/**
* 封裝一個函式 mineReadFile 讀取檔案內容
* 引數: path 檔案路徑
* 回傳: promise 物件
*/
function mineReadFile(path){
return new Promise((resolve, reject) => {
//讀取檔案
require('fs').readFile(path, (err, data) =>{
//判斷
if(err) reject(err);
//成功
resolve(data);
});
});
}
mineReadFile('./promise/resource/content.txt').then(value=>{
//輸出檔案內容
console.log(value.toString());
}, reason=>{
console.log(reason);
});

1.4 util.promisify()方法
node.js中文檔案:

Js代碼:
/**
* util.promisify 方法
*/
//引入 util 模塊
const util = require('util');
//引入 fs 模塊
const fs = require('fs');
//回傳一個新的Promise物件
let mineReadFile = util.promisify(fs.readFile);
mineReadFile('./promise/resource/content.txt').then(value => {
console.log(value.toString());
}, reason => {
console.warn(reason);
});

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/289612.html
標籤:其他
上一篇:JQuery獲取第幾個元素
下一篇:2021暑假第三次討論班
