node.js Promise介绍 (尚硅谷李立超老师视频笔记)

Promise介绍

 

• 问题:
异步必须通过回调函数来返回结果,回调函数一多就很痛苦
• Promise
○ Promise可以帮助我们解决异步中的回调函数的问题
• Promise就是一个用来存储数据的容器
○ 它拥有一套特殊的的存取数据的方式
○ 这个方式使得它里边可以存储异步调用的结果

        • 创建Promise
Promise的创建:

const promise = new Promise((resolve,reject) => {
    resolve("哈哈")
    //reject("哈哈")
})
console.log(promise)

 

• 创建Promise时,构造函数需要一个函数作为参数
• resolve 和 reject 是两个涵数,通过这两个函数可以向Promise中存储数据
• resolve在执行正常时存储数据,reject在执行错误时存储数据
• 通过函数来向Promise中添加数据,好处就是可以用来添加异步调用的数据

• 从Promise中读取数据
○ 可以通过Promise的实例方法then来读取Promise中存储数据
• Promise then方法读取数据:

const promise = new Promise((resolve,reject) => {
    resolve("哈哈")
    //reject("哈哈")
})

Promise.then((result) => {
    console.log("1",result)
},(reason) => {
    console.log("2",reason)
})

 

• then需要两个回调函数作为参数,回调函数用来获取Promise中的数据
○ 通过resolve存储的数据,会调用第一个函数的返回
○ 通过reject存储的数据或者出现异常时,会调用第二个函数返回
• 可以在第一个函数中编写处理数据的代码
• 可以在第二个函数中编写处理异常的代码


• Promise中维护了两个隐藏属性
○ PromiseResult
§ 用来存储数据
○ PromiseState
• 记录Promise的状态(三种状态)
    1. pending (进行中)
    2. fulfilled (完成)
    3. rejected (拒绝,出错了)
• state只能修改一次,修改以后永远不会在变

• 流程:
○ 当Promise创建时,PromiseState初始值为pending
○ 当通过resolve存储数据时 
§ PromiseResult 变为存储的数据 PromiseState 变为 fulfilled (完成)
○ 当通过reject存储数据时 PromiseState 变为 rejected (拒绝,出错了)
§ PromiseResult 变为存储的数据或 异常对象
• 当我们通过then读取数据时,相当于Promise设置了回调函数
○ 如果PromiseState变为fulfilled, 则调用then的第一个回调函数来返回
○ 如果PromiseState变为
rejected,则调用then的第二个回调函数来返回

• Promise的catch方法使用:

const promise = new Promise((resolve,reject) => {
    resolve("哈哈")
    //reject("哈哈")
})
promise.catch(reason => {
    console.log(22222)
})

• catch() 用法和then类似,但是只需要一个回调函数作为
参数
○ catch() 中的回调函数只会在Promise被拒绝才会调用
○ catch() 相当于then(null, reason =>{})
○ catch() 就是一个专门处理异常的方法
 

• Promise方法finally的使用:
 

const promise = new Promise((resolve,reject) => {
    resolve("哈哈")
    //reject("哈哈")
})
Promise.finally(reason => {
    console.log("没有什么能阻止我执行)
})

• finally()
○ 无论是正常存储数据还是出现异常了,finally总会执行
○ 但是finally的回调函数中不会接收到数据
○ finally()通常用来编写一些无论成功与否都要执行的代码
 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值