使用async读取异步数据

使用传统方式读取异步数据

const fs = require('fs')

fs.readFile('readme.txt', function (err, data) {
  console.log(data.toString());
})

// hello async

使用promise对象读取异步数据

const fs = require('fs')

function readFile(path) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, function (err, data) {
      if (err) {
        reject(err);
        return;
      }
      resolve(data);
    })
  })
}

readFile('readme.txt').then((data) => {
  console.log(data.toString()); // hello async
}).catch(e => {
  console.log(e);
})

使用async/await读取异步数据

const fs = require('fs')

function readFile(path) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, function (err, data) {
      if (err) {
        reject(err);
        return;
      }
      resolve(data);
    })
  })
}

async function foo1(){
  const data = await readFile('readme.txt');
  console.log('--------------------------------');
  console.log(data.toString());
}

foo1() // hello async

使用node自带的promisify读取异步数据

const fs = require('fs')
const promisify = require('util').promisify;
const rf = promisify(fs.readFile)

// 直接读取
rf('readme.txt').then((data) => {
  console.log(data.toString());  // hello async
}).catch(e => {
  console.log(e);
})

// 使用async读取
async function demo() {
  const data = await rf('readme.txt');
  console.log(data.toString());
}

demo();  // hello async
原文地址:https://www.cnblogs.com/huyifei/p/9922419.html