Skip to content

Latest commit

 

History

History
102 lines (77 loc) · 2.18 KB

util.md

File metadata and controls

102 lines (77 loc) · 2.18 KB

util工具

本章的目的也是为了熟悉一下内部可以使用的api,按照使用场景来归类,util总览:

  • util.promisify(original)
  • util.isDeepStrictEqual(val1, val2)
  • util.inspect()
  • util.deprecate(fn, msg[, code])
  • util.format(format)
  • util.types
  • Class util.TextDecoder
  • Class util.TextEncoder

util.promisify

让一个遵循异常优先的回调风格的函数,即(err, value) => ...,异常优先即err为回调的第一个参数

符合这种形式的内部模块有

  • fs
    const readFile = util.promisify(fs.readFile)
    readFile('path').then().catch()
  • child_process里的execexecFile 虽然形式上看起来是的,但实际不是
    const exec = util.promisify(sub.exec)
    exec('path').then().catch()

在Node的v10.0.0之后fs模块自带promise方法,即

const fs = require('fs').promises
fs.readFile().then().catch()

另外,bluebird包也支持promise化,例如

const Promise = require('bluebird')
Promise.promisifyAll(fs)

fs.readFileAsync().then().catch()

它是在原有的基础上再增加的Async后缀名的promise方法

如果在项目中使用除了fs之外的模块,更倾向于用bluebird去做Promisify

util.inspect

返回 object 的字符串表示

const example = {
    name: 'ym',
    age: 18
}
console.log(util.inspect(example))
// 会以字符串的形式输出 { name: 'ym', age: 18 }

util.deprecate

将每个方法包装一层输出警告,警告的信息自定义,code为废弃的 API 列表

const util = require('util')

const a = util.deprecate(() => {
  console.log('function self')
}, '该方法即将被弃用', 'DEP0001')

a()

util.format

返回一个格式化后的字符串

  • %s
  • %d
  • %i
  • %f
  • %j
util.format('%s:%s', 'foo');
// 返回: 'foo:%s'

util.types

提供一系列方法来验证某些类型,其中常用的有

util.types.isAsyncFunction()
util.types.isBooleanObject()
util.types.isNumberObject()
util.types.isStringObject()
util.types.isDate()
util.types.isPromise()
util.types.isNativeError()