对于Promise的理解

本文深入探讨了Promise,包括它的理解、状态变化、为何使用Promise以及解决回调地狱的问题。此外,文章还列举了Promise的几个难点,如状态改变、回调函数的调用和顺序、异常处理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 理解

  • 抽象理解

    promise是JS中进行异步编程的新的解决方案(旧的是纯回调函数)

  • 具体表达

    1. 从语法上来说:Promise是一个构造函数
    2. 从功能上来说:Promise对象用来封装有个异步操作并可以获取其结果

二.Promise状态的改变

Promise对象只有三种状态。

异步操作“未完成”(pending)
异步操作“已完成”(resolved,又称fulfilled)
异步操作“失败”(rejected)

这三种的状态的变化途径只有两种。

异步操作从“未完成”到“已完成”
异步操作从“未完成”到“失败”。

这种变化只能发生一次,一旦当前状态变为“已完成”或“失败”,就意味着不会再有新的状态变化了。

因此,Promise对象的最终结果只有两种。

异步操作成功,Promise对象传回一个值,状态变为resolved,成功的结果为value。
异步操作失败,Promise对象抛出一个错误,状态变为rejected,失败的结果为reason。


三.为什么要使用Promise?

1)指定的回调函数的方式更加灵活【为什么这么说?】

 -l旧的纯回调函数必须在启动异步任务前指定
-而promise可以先启动异步任务=>返回promise对象=>给promise对象绑定回调函数
  (甚至可以异步任务结束后指定/多个)

2)支持链式调用,可以解决回调地狱【什么是回调地狱?】

     o什么是回调地狱?
            -回调函数嵌套调用,外部回调函数异步执行的结果是嵌套的回调执行的条件
    o回调地狱的缺点?
			-不便于阅读-不便于异常处理
	o怎么解决?
			promise链式调用
	o终极解决方案?
			async/await

下面举个栗子看看叭= =

在这里插入图片描述在这里插入图片描述

=================

在这里插入图片描述
在这里插入图片描述在这里插入图片描述


四.关于Promise的几个难点

1. 如何改变promise的状态?

在这里插入图片描述举个栗子叭^ - ^
在这里插入图片描述


2. 一个promise指定多个成功/失败回调函数都会调用?
在这里插入图片描述
在这里插入图片描述


3. 改变promise状态和指定回调函数的顺序问题?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4. promise.then()返回的新promise结果由什么决定?

在这里插入图片描述在这里插入图片描述


5. promise如何串联多个操作任务?

在这里插入图片描述

在这里插入图片描述


6. promise异常穿透?

在这里插入图片描述
在这里插入图片描述


7. 中断promise链?

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值