Node回调函数改写

以读取文件为例,首先,创建文件a.txt,文件内写入内容Hello world!

回调函数写法

const fs = require('fs')
fs.readFile('./a.txt', 'utf-8', (err, data) => {
  if (err) throw err
  console.log(data)
})

Promise写法

const fs = require('fs')
function getTxt (path) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, 'utf-8', (err, data) => {
      if (err) reject(err)
      resolve(data)
    })
  })
}
getTxt('./a.txt')
  .then(rst => console.log(rst))

bluebird写法

const Promise = require('bluebird')
const fs = Promise.promisifyAll(require('fs'))
fs.readFileAsync('./a.txt', 'utf-8')
  .then(data => console.log(data))

Generator写法

const fs = require('fs')
function getTxt (path) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, 'utf-8', (err, data) => {
      if (err) reject(err)
      resolve(data)
    })
  })
}
function * fun () {
  yield getTxt('./a.txt')
}
const run = fun()
run.next().value.then(data => console.log(data))

async/await写法

const fs = require('fs')
function getTxt (path) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, 'utf-8', (err, data) => {
      if (err) reject(err)
      resolve(data)
    })
  })
}
async function run (params) {
  const file = await getTxt(params)
  console.log(file)
  return file
}
run('./a.txt')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • async 函数 含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是...
    huilegezai阅读 5,017评论 0 6
  • 异步编程对JavaScript语言太重要。Javascript语言的执行环境是“单线程”的,如果没有异步编程,根本...
    呼呼哥阅读 12,053评论 5 22
  • 首先看一下下列代码 var gen = function* (){var a = yield readFile()...
    c菜鸟阅读 5,526评论 0 1
  • 含义 ES2017标准引入了async函数,使得异步操作变得更加方便.async函数其实就是Generator函数...
    JarvanZ阅读 3,535评论 0 0
  • 框架提出的背景 ES6/7带来的变革 自ES6确定和ES7中async/await开始普及,Node的发展变得更加...
    宫若石阅读 12,709评论 1 14

友情链接更多精彩内容