promise是什么?
1、主要用于异步计算
2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3、可以在对象之间传递和操作promise,帮助我们处理队列
promise的三种状态:
pending 等待状态:创建Promise对象时的初始状态
fulfilled 成功状态: 成功时的状态
rejected 失败状态: 失败时的状态
promise解决了回调地狱的问题,不会导致难以维护,then也可以按照顺序执行
let fs = require("fs");
// 封装了一个read方法返回一个Promise的实例
function read(filePath,encoding){
return new Promise((resolve,reject)=>{
fs.readFile(filePath,encoding,(err,data)=>{
if(err) reject(err);
resolve(data);
})
})
}
fs.read("1.txt","utf-8").then(data=>{
fs.read(data,"utf-8"); // data相当于于callback的成功回调
}).then(data=>{
fs.read(data,"utf-8");
});
什么是回调地狱?
做前端开发,处理异步请求的情况,在请求到的成功回调函数里继续写函数,长此以往形成了回调地狱
let fs = require("fs");
fs.readFile("1.txt","utf-8",function(err,data){ // 读取文件1.txt
console.log(data); // 2.txt
fs.readFile(data,"utf-8",function(err,data){ // 读取文件2.txt
console.log(data); // 3.txt
fs.readFile(data,"utf-8",function(err,data){ // 读取文件3.txt
console.log(data); // 一层一层又一层
})
})
})