Promise:
- promise是一个构造函数,方法有all、reject、resolve这几个,原型上有then、catch等方法。那么new Promise 出来的对象肯定就有then、catch方法
状态说明
Promise
有三种状态:pending
、fulfilled
、rejected
pending
指初始等待状态,初始化Promise
的状态const p1 = new Promise((resolve, reject) => { }) console.log(p1)//Promise { <pending> }
resolve
指已经解决,将Promise
的状态设置为fulfilled
const p1 = new Promise((resolve, reject) => { resolve('我很满意') }) console.log(p1)//我很满意
reject
指拒绝处理,将prosime
状态设为为rejected
const p1 = new Promise((resolve, reject) => { reject('拒绝了你的承诺') }) console.log(p1)//拒绝了你的承诺
Promise
创建时立即执行同步任务,then
会放在异步微任务中执行,需要等到同步任务执行后在执行
promise 对象还可调用两个方法,一个叫then,一个叫catch
当这个promise对象内部的resolve被调用,就会执行then里的代码
当这个promise对象内部的reject被调用,就会执行catch里的代码
// 导入fs filesystem 文件管理模块
const fs = require('fs')
const { resolve } = require('path')
// 构建一个promise对象
const ps = new Promise((resolve, reject) => {
// 调用fs模块中的readFile方法
fs.readFile('./1.txt', (err, data) => {
// 读取01.txt文件夹成功的情况
if (!err) {
// 调用 resolve 方法并传入读取到的内容
resolve(data)
} else {
// 读取失败,调用reject方法,并传入错误信息
resolve(err)
}
})
})
// promise 对象还可调用两个方法,一个叫then,一个叫catch
// 当这个promise对象内部的resolve被调用,就会执行then里的代码
// 当这个promise对象内部的reject被调用,就会执行catch里的代码
ps
.then(res => {
console.log('then调用' + res);
})
.catch(err => {
console.log('catch调用' + err);
})