util模块主要设计用于支持Node.js自己的内部API的需求。但是,许多实用程序对于应用程序和模块开发人员也很有用。它可以通过以下方式访问:

const util = require('util');

util.callbackify(原始)

接受一个async函数(或者返回一个Promise的函数),并返回一个遵循错误优先回调风格的函数,即将(err, value) => ...回调作为最后一个参数。在回调中,第一个参数将是拒绝原因(或者null如果Promise已解决),第二个参数将是已解析的值。

const util = require('util');

async function fn() {
return 'hello world';
}
const callbackFunction = util.callbackify(fn); callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});

将打印:

hello world

注意

  • 回调是异步执行的,并且会有一个有限的堆栈跟踪。如果回调抛出,进程将发出一个'uncaughtException' 事件,如果不处理则退出。

  • 由于null具有特殊含义作为回调的第一个参数,因此如果包装函数拒绝Promise带有虚假值的a作为原因,则该值将被包装在一个Error存储在名为的字段中的原始值中 reason

util.debuglog

util.debuglog()方法用于创建一个函数,该函数stderr根据NODE_DEBUG 环境变量的存在有条件地写入调试消息。如果该section名称出现在该环境变量的值内,则返回的函数的操作类似于 console.error()。如果不是,则返回的函数是空操作。

const util = require('util');
const debuglog = util.debuglog('foo'); debuglog('hello from foo [%d]', 123);

如果该程序NODE_DEBUG=foo在环境中运行,那么它将输出如下所示的内容:

FOO 3245: hello from foo [123]

util.deprecate(函数,字符串)

util.deprecate()方法将给定function或类包装为标记为已弃用的方式。

util.format(格式[,... args])

util.format()方法返回格式化的字符串,使用第一个参数作为一个类似printf的格式。

第一个参数是一个包含零个或多个占位符标记的字符串。每个占位符令牌均由来自相应参数的转换后的值替换。支持的占位符是:

  • %s - 字符串。
  • %d - 数字(整数或浮点值)。
  • %i - 整数。
  • %f - 浮点值。
  • %j - JSON。'[Circular]'如果参数包含循环引用,则替换为字符串。
  • %o - 对象。具有通用JavaScript对象格式的对象的字符串表示形式。类似于util.inspect()选项{ showHidden: true, depth: 4, showProxy: true }。这将显示完整的对象,包括不可枚举的符号和属性。
  • %O - 对象。具有通用JavaScript对象格式的对象的字符串表示形式。类似于util.inspect()没有选项。这将显示不包含不可枚举符号和属性的完整对象。
  • %%- 单个百分号('%')。这不会消耗一个参数。

如果占位符没有相应的参数,则占位符不会被替换。

util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

  如果传递给util.format()方法的参数比占位符的数量多,则额外的参数将被强制转换为字符串,然后连接到返回的字符串,每个字符串都由空格分隔。过度的参数 typeof'object''symbol'(除外null)将被转换util.inspect()

util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'

如果第一个参数不是一个字符串,则util.format()返回一个字符串,它是由空格分隔的所有参数的连接。每个参数都被转换为一个字符串util.inspect()

util.format(1, 2, 3); // '1 2 3'

  如果只传递一个参数util.format(),则返回原样而没有任何格式。

util.format('%% %s'); // '%% %s'

node Util 模块的更多相关文章

  1. 夺命雷公狗---node.js---8url模块和util模块

    我们先到手册上看看: 上面很明显就写着返回一个对象. 再来看看util模块, 废话不哦多说,先上一点代码: /** * Created by leigood on 2016/8/13. */ var ...

  2. 深入浅出node(2) 模块机制

    这部分主要总结深入浅出Node.js的第二章 一)CommonJs 1.1CommonJs模块定义 二)Node的模块实现 2.1模块分类 2.2 路径分析和文件定位 2.2.1 路径分析 2.2.2 ...

  3. Node.js模块

    每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js).JSON文本文件(.json)和二进制模块文件(.node). mymodul.js function Hell ...

  4. step by step 之餐饮管理系统五(Util模块)------附上篇日志模块源码

    这段时间一直在修改日志模块,现在基本上写好了,也把注释什么的都加上了,昨天邮件发送给mark的园友一直报失败,老是退回来,真是报歉,如下图所示:

  5. 如何发布一个自定义Node.js模块到NPM(详细步骤)

    咱们闲话不多说,直接开始! 由于我从没有使用过MAC,所以我不保证本文中介绍的操作与MAC一致. 文章开始我先假定各位已经在window全局安装了Node.js,下面开始进行详细步骤介绍: 本文本着, ...

  6. 编写原生Node.js模块

    导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...

  7. 编写原生的Node.js模块

    导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...

  8. Node.js 模块

    稳定性: 5 - 锁定 Node 有简单的模块加载系统.在 Node 里,文件和模块是一一对应的.下面例子里,foo.js 加载同一个文件夹里的 circle.js 模块. foo.js 内容: va ...

  9. node基础—模块系统

    模块的概念 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块加载系统. 在 Node.js 中,文件和模块是一一对应的(每个文件被视为一个独立的模块),换言之,一个 Node ...

随机推荐

  1. 理解AOP思想(面向切面编程)

    AOP:面向切面编程,相信很多刚接触这个词的同行都不是很明白什么,百度一下看到下面这几句话: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预 ...

  2. 慕课网python分布式爬虫打造搜索引擎视频中爬取伯乐网文章

    代码:https://github.com/longbigbeard/scrapy_demo

  3. github 第一次使用及出现的问题解决

    1.前言: 我们使用git,自然是希望我们的项目可以方便的从本地上传到git的仓库中,从而实现项目版本控制和备份,但是,从GitHub的网站上传文件,只能上传25MB的数据,我想多数人的项目都不可能只 ...

  4. linux install JDK

    安装JDK 下载jdk-6u23-linux-i586.bin,samba,FTP cd /usr/local/src/ wget http://www.aminglinux.com/bbs/data ...

  5. zoj1967 poj2570 Fiber Network (floyd算法)

    虽然不是最短路,但是询问时任意两点之间的信息都要知道才能回答,由此联想到floyd算法,只要都floyd算法的原理理解清楚了就会发现:这道题的思想和求任意两点之间的最短路的一样的,只不过是更新的信息不 ...

  6. 使用Visio画UML模型

    Microsoft Office Visio“UML 模型图” 模板为创建复杂软件系统的面向对象的模型 (模型:建模系统的一种抽象表示,它从特定的视角并在某一抽象级别上指定建模系统.) 提供全面的支持 ...

  7. Zeroc Ice 发布订阅者之demo Icestorm之clock

    刚刚在服务端(192.168.0.113)和客户端跑通(192.168.0.188),在这里记录,作为备忘. 第一步:读readme,先用vs2010生成subscriber.exe和publishe ...

  8. 【LeetCode】005. Longest Palindromic Substring

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  9. 自编jQuery插件实现模拟alert和confirm

    现在绝大多数网站都不用自带的alert和confirm了,因为界面太生硬了.因此这个插件就这样产生了自己定制一个的想法...... 啥也不说,先上图,有图有真相 :) 现在绝大多数网站都不用自带的al ...

  10. mysql之 共享表空间与独立表空间、frm,MYD,MYI.idb,par文件说明

    一.共享表空间与独立表空间MySQL5.5默认是共享表空间 ,5.6中,默认是独立表空间. 共享表空间:ibdata1是InnoDB的共享表空间,默认配置是把全部表空间存放到ibdata1中,因此而造 ...