promise是什么?
Promise 是异步编程的一种解决方案,比传统的解决方案,例如回调函数、事件等更合理和更强大。Promise简单说就是一个容器,里面保存着一个异步操作的结果。
特点:
- 对象的状态不受外界影响。
- 一旦状态改变,就不会再变,任何时候都可以得到这个结果
缺点:
- 无法取消Promise,一旦新建它就会立即执行,无法中途取消。
- 如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。
- 当处于Pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
Promise常用方法有哪些及作用是什么?
- then() 调用resolve方法时,获取成功之后的数据
- catch() 调用reject 方法时,获取失败之后的数据
- all() 调用几个promise 回调成功之后的统一处理
- finally() 指定不管 Promise 对象最后状态如何,都会执行的操作
Promise 解决地狱回调的方法:
//导入文件模块
const fs = require("fs");
function getData(path, datafn, errfn) {
// new Promise()是立即执行构造函数的代码的,构造函数是隐含return的
return new Promise(function () {
fs.readFile(path, "utf8", function (err, data) {
if (err) {
// return console.log(err)
errfn(err.message);
}
// console.log(data)
datafn(data);
});
});
}
getData(
"./files/1.txt",
function (data) {
console.log(data)