异步函数-解决回调地狱

穿精又带淫゛_ 提交于 2019-12-02 12:46:37

回调函数多层嵌套,不易于代码的扩展并且很难维护

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()

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!