Promise 总结
2024/1/16
1. 为什么需要 Promise
解决回调地狱问题。
例如:多次的 HTTP Request,第一次请求获取 id,第二次请求根据 id 获取 username,第三次请求根据 username 获取 email。使用多个 .then() 可以优雅地解决这个问题。
2. Promise 实例
const p = new Promise((resolve, reject) =>{});创建
Promise实例需要一个函数作为参数。这个函数又包含了两个参数:resolve,rejectPromise实例有两个属性:state,resultstate有三个值:pending,fulfilled,rejected
2.1 Promise 的状态(state)
调用
resolve,state => fulfilled调用
reject,state => rejectedPromise的状态改变是一次性的,不能再次修改。
2.2 Promise 的结果(result)
resolve、reject函数的参数,即为Promise的result
const p = new Promise((resolve, reject) => {
resolve("成功的结果");
// reject("失败的结果")
})
console.dir(p)3. then() 方法
then()方法接受两个函数参数,第一个参数在成功时调用(相当于执行resolve函数),第二个在失败时调用(相当于执行reject函数)。then()方法返回一个新的Promise,其状态为pending在
then()方法中,通过return将返回的Promise实例改为fulfilled状态在
then方法中,出现代码错误,会将返回的Promise实例改为rejected状态
4. catch() 方法
catch()方法接受一个函数参数,相当于then()方法中的第二个函数参数。