Node util模块

发布于:2025-02-20 ⋅ 阅读:(18) ⋅ 点赞:(0)

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 }

网站公告

今日签到

点亮在社区的每一天
去签到