一、回调地狱
多层回调函数的相互嵌套,就形成了回调函数
缺点:1.代码难以维护(代码合性差)2.大量冗余的代码相互嵌套,可读性差
例如:定时器形成回调:
setTimeout(()=>{
setTimeout(()=>{
setTimeout(()=>{},500)
},1000)
},1500)
二、解决回调地狱
ES6中新增了promise
promise:
-promise是一个构造函数
创建一个promise实例 const p = new Promise()
new出来的promise实例对象,代表一个异步操作
-promise.prototype上包含一个.then方法
每一次new Promise()构造函数得到的实例对象都可以通过原型链的方式访问到.then方法
- .then()方法用来预先指定成功和失败的回调函数
p.then(成功的回调函数,失败的回调函数)
p.then(()=>{},()=>{})
注意:调用.then方法时,成功的回调函数是必选的,失败的回调函数是可选的
.catch()方法,对错误的捕获和处理
基于then-fs读取文件内容
由于nodejs官方听得fs模块仅支持以回调函数的方式读取文件,不支持promise的调用方式
所以安装then-fs第三方包,支持基于promise的方式读取文件