回调函数多层嵌套,不易于代码的扩展并且很难维护
const fs = require('fs');
fs.readFile('./1.txt', 'utf8', (err, result1) => {
console.log(result1)
fs.readFile('./2.txt', 'utf8', (err, result2) => {
console.log(result2)
fs.readFile('./3.txt', 'utf8', (err, result3) => {
console.log(result3)
})
})
});
使用异步函数能有效的解决回调地狱的问题(ES7)
const fs=require('fs')
//改造现有异步函数api 让其返回promise对象 从而支持异步函数语法
//promisify是util模块里的一个方法,可以改造现有异步函数使其能返回promise对象的函数
const promisify=require('util').promisify
// 调用promisify方法改造现有异步API 让其返回promise对象
const readFile=promisify(fs.readFile)
async function run() {
let r1=await readFile('./1.txt','utf8')
// let r1=await fs.readFile('./1.txt','utf8')直接返回对象不用写回调函数
let r2=await readFile('./2.txt','utf8')
let r3=await readFile('./3.txt','utf8')
console.log(r1)
console.log(r2)
console.log(r3)
}
run()