​ ——真正的大师永远怀着一颗学徒的心

简介

  • Promise是一种新的技术(ES6规范)
  • Promise是Js中进行异步编程的新解决方案(旧方案是单纯使用回调函数)
  • 从语法上来说,Promise是一个构造函数
  • 从功能上来说,Promise对象用来封装一个异步操作并可以获取成功/失败的结果值

优势

  • 指定回调函数的方式更灵活

    image-20230304150847507
  • 支持链式调用,可以解决回调地狱的问题

image-20230304150921322

使用示例

image-20230304151516231
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1、声明一个Promise对象     
const p = new Promise(函数对象)

2、函数对象有两个参数(resolve,reject)=>{异步操作}

3、异步操作成立时调用resolve方法,失败时调用reject方法

4、实例化对象有then方法
p.then(参数是两个函数,前面是成功时的resolve,后面是失败时的reject方法)

5、p.then(()=>{
alert('你好,幸会!');
},()=>{
alert('很遗憾,再也不见!');
})

数值不能直接调用了,通过方法的传递

image-20230304152500692

Promise.all方法

image-20230304155029532 image-20230304154935623

多个成功或失败回调函数

一个Promise指定多个成功/失败回调,都会调用吗?

当Promise改变为对应的状态时都会调用

then和catch

支持链式的then调用,支持异常穿透,即只需在最后写catch方法即可。

async

image-20230304162719539

await

image-20230304162210562

注:try、catch方法异常捕获

image-20230304162449177

Promise的自定义封装

链接:https://www.bilibili.com/video/BV1GA411x7z1?p=25&vd_source=86e56f7e58ffdf635fdb18429a4cf610