其实用回调韩函数来解决异步处理的问题,但是回调起来是非常繁琐的
const fs = require('fs')
const path = require('path')
// 回调地狱的问题 --> promise解决
// fs.readFile(path.join(__dirname,'./1.txt'),'utf8',(err,result)=>{
// console.log(result)
// fs.readFile(path.join(__dirname,'./2.txt'),'utf8',(err,result)=>{
// console.log(result)
// fs.readFile(path.join(__dirname,'./3.txt'),'utf8',(err,result)=>{
// console.log(result)
// })
// })
// })
// var p1 = new Promise(function(resolve,reject){
// fs.readFile(path.join(__dirname,'./1.txt'),'utf8',(err,result)=>{
// resolve(result)
// })
// })
// var p2 = new Promise(function(resolve,reject){
// fs.readFile(path.join(__dirname,'./2.txt'),'utf8',(err,result)=>{
// resolve(result)
// })
// })
// var p3 = new Promise(function(resolve,reject){
// fs.readFile(path.join(__dirname,'./3.txt'),'utf8',(err,result)=>{
// resolve(result)
// })
// })
然后开始用promise来解决回调嵌套的问题
function p(src){
return new Promise(function(resolve,reject){
fs.readFile(path.join(__dirname,src),'utf8',(err,result)=>{
resolve(result)
})
})
}
// var p1=p('./1.txt');
// var p2=p('./2.txt');
// var p3=p('./3.txt');
// p1.then(function(r1){
// console.log(r1)
// return p2
// }).then(function(r2){
// console.log(r2)
// return p3
// }).then(function(r3){
// console.log(r3)
// })
然后promise处理起来也繁琐,于是用async 来封装promise,这样看起来简洁
async function fn(){
//await等价于p("./1.txt").then(function(r1){
// console.log(r1)
// return p2
// })
var p1=await p("./1.txt")
var p2=await p("./2.txt")
var p3=await p("./3.txt")
console.log(p1)
console.log(p2)
console.log(p3)
}
fn()