1. 程式人生 > >node 異步回調 —叠代記錄

node 異步回調 —叠代記錄

style return -c blog init path package code rap

1.0 開始時node采用了基礎的js回調形勢
const fs = require(‘fs‘);
fs.readFile(‘./package.json‘,(err,data) => {
  if(err) return console.log(err);
  data =JSON.parse(data)
  console.log(data)
})
2.0 引入了promise語法進行書寫
const fs = require("fs");
?
function promiseFun(path) {
  console.log(path)
  
return new Promise((resolve, reject) => { fs.readFile(path, (err, data) => { if (err){ reject(err)} else{ resolve(data);} }); }); } ? promiseFun(‘./package.json‘) .then(data => { data = JSON.parse(data); console.log(data.name); }) .catch(err => { console.log(
"err"); });
3.0 使用node 的util工具類包裝
const fs = require("fs");
const util = require(‘util‘);
util.promisify(fs.readFile)(‘./package.json‘)
.then(JSON.parse)
.then(data => {
  console.log(data.name);
})
.catch(err => {
  console.log(err)
})
4.0 使用最新的async語法實現異步方法同步書寫
const fs = require("fs");
const util 
= require(‘util‘); const readAsync=util.promisify(fs.readFile); ? ? async function init() { try { let data = await readAsync(‘./package.json‘) data = JSON.parse(data); console.log(data); }catch(err){ console.log(err) } }


node 異步回調 —叠代記錄