node Util 模块
该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'
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号