Promise的理解与用法(async与await)

Promise 、Async与Await

前言:

该笔记记录了Promise 的方法与特点,以及之前在面试被问到的面试题

Promise的理解:

  • 它是js的原生对象,是一种异步编程解决方法,可替换掉传统的回调函数解决方法
  • 简单理解它是一个容器,里面保存着某个未来才会结束的事件(异步操作)的结果
  • 从语法上来说:他是一个构造函数
  • 从功能上来说:他是一个对象,用来封装异步操作并可以获取结构值

回调地狱(如下图):当回调函数嵌套着回调函数,这样不断的嵌套,就造成了 回调地狱

在这里插入图片描述

Promise的特点:

  • 他有三个状态、pending(未完成)、fulfilled(已完成)、rejected(失败)
  • 他的状态发生改变之后,就不会在变了
  • 它可以then()方法链式调用,回调是同步的,then是异步的

先简单 new 一个Promise :

在这里插入图片描述

Promise的异步操作与方法:

resolve (成功) 与 reject (失败):

在这里插入图片描述

catch()方法 :

pormoise异步操作失败是,递交失败结果时,就可以用到catch方法 ,携带的参数就会被调用并获取错误原因

在这里插入图片描述

then ( ) 方法:

它返回的是一个新的Promise实例; 它可以链式调用,PP.then().then().then().,… ,这也是promise的精髓,用来解决回调地狱

then接受参数:1、Resolved状态成功时的回调(必填)2、Resolved状态失败时的回调(非必填);如下图

在这里插入图片描述

catch方法只能处理发生的错误,then方法不但把自己的工作做了,他会去取代catch方法的工作(卷王)

all ( )方法:

它与then方法同级,它在所有异步操作执行完毕 且 所以的操作结果成功时,他才会执行回调

any()方法:

它与all方法恰恰相反,它只要有处理一个成功执行的函数就成功,它就返回那个已经成功的 promise,全部失败就全部返回错误

在这里插入图片描述

race()方法:

它与all更加相反了,谁先执行完成就先执行回调,不管成功回调还是失败回调,其余的就不在执行

在这里插入图片描述

Promise 被面试到的面试题:

1、如何改变promise的状态?
  • .resolve(value): 如果当前是 pending 就会变为 resolved
  • .reject(reason): 如果当前是 pending 就会变为 rejected
  • .抛出异常(throw): 如果当前是 pending 就会变为 rejected
2、有10万条接口,一次只能请求50条(不能超过),请求过程中,有成功的话,就继续补满50条,让他继续请求

(一个水桶装50条,请求成功就等于漏掉一点水,一漏掉就补满这个水桶)如何实现?

在这里插入图片描述

Async 与 Await

它也是用来处理异步操作的。(终极武器)

  • 它们两者是相互配合使用的,但await不能独立使用,必须的配合async使用
  • async可以独立工作,声明一个函数异步的(用同步的方式进行异步的代码)
  • 它们两者的工作方式等同于generator函数的工作方式(可以说是他的语法糖)
  • 它一般会返回一个promise

他们类似这种,拦路,标记,检查,不然不能继续往下走

如果await后面跟着得是个函数,它一般会返回的是一个promise,那么他等待的就是promise的成功状态结果

如果函数返回的不是promise,那么他等待的是函数返回的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值