Node util模块
概述
Node.js 的 util 模块是一个核心工具模块,提供了许多实用的函数,用于弥补 JavaScript 原生功能的不足或简化常见任务。如:调试、类型检查、继承、格式化字符串、将对象转换为字符串、检查对象类型等。
用法
格式化字符串
支持占位符:
- %s:字符串
- %d:数字
- %j:JSON
- %o:对象
const util = require('util');
const name = "小明";
const age = 18;
const info = {
hobby: "篮球",
address: "北京市"
};
const msg = util.format("hello 姓名:%s 年龄:%d 信息:%o ", name, age, info);
console.log(msg);
回调函数转Promise函数
回调函数必须符合 (err, value) => {}
格式。
const util = require('util');
function request(data, callback) {
setTimeout(() => {
if (data === "hello") {
callback(null, "成功了");
} else {
callback(new Error("失败了"));
}
}, 100);
}
// 传统回调方式
request("hello", (data, err) => {
if (err) {
console.log("失败:", err);
return;
}
console.log("成功:", data);
});
// 回调函数转Promise函数
const promiseFun = util.promisify(request);
promiseFun("hello")
.then((data) => {
console.log("成功:", data);
})
.catch((err) => {
console.log("失败:", err);
});
Promise函数转回调函数
回调函数必须符合 (err, value) => {}
格式。
const util = require('util');
function request(data) {
return new Promise((resolve, reject) => {
if (data === "hello") {
resolve("成功了");
} else {
reject("失败了");
}
});
}
// Promise方式
request("hello")
.then(res => {
console.log("success:", res);
})
.catch(err => {
console.log("fail:", err);
});
// 转回调函数
const callbackFun = util.callbackify(request);
callbackFun("hello", (err, res) => {
if (err) {
console.log("fail:", err);
} else {
console.log("success:", res);
}
});
类型检查
const util = require('util');
console.log(util.types.isDate(new Date())); // true
console.log(util.types.isRegExp(/abc/)); // true
console.log(util.types.isBooleanObject(new Boolean(true))); // true
对象转字符串
const util = require('util');
const user = {
name: "Tom",
age: 18,
sex: true
};
console.log(util.inspect(user)); // { name: 'Tom', age: 18, sex: true }