Node.js 8.0.0
本机异步/等待
Promise
从这个版本开始,你可以使用util库中的原生 Node.js 函数。
const fs = require('fs')
const { promisify } = require('util')
const readFileAsync = promisify(fs.readFile)
const writeFileAsync = promisify(fs.writeFile)
const run = async () => {
  const res = await readFileAsync('./data.json')
  console.log(res)
}
run()
Promise包装
const fs = require('fs')
const readFile = (path, opts = 'utf8') =>
  new Promise((resolve, reject) => {
    fs.readFile(path, opts, (err, data) => {
      if (err) reject(err)
      else resolve(data)
    })
  })
const writeFile = (path, data, opts = 'utf8') =>
  new Promise((resolve, reject) => {
    fs.writeFile(path, data, opts, (err) => {
      if (err) reject(err)
      else resolve()
    })
  })
module.exports = {
  readFile,
  writeFile
}
...
// in some file, with imported functions above
// in async block
const run = async () => {
  const res = await readFile('./data.json')
  console.log(res)
}
run()
建议
try..catch如果您不想重新抛出异常,请始终用于等待块。