学习笔记:es6——Promise 对象学习

1Promise的含义:

Promise是异步编程的一种解决方案;

Promise是一个对象,可以获取异步操作的消息,提供统一的api,各种异步操作都可以用同样的方式处理;

Promise对象有以下两个特点:

  1. 对象状态不受外界影响。Promise代表一个一步操作,有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败)。只有一步操作的结果可以决定是哪一种状态,其他任何操作无法改变这个状态。
  2. 一旦状态改变,就不会再变,任何时候都可以得到这个结果;

Promise对象的优点:
可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。控制异步操作更加容易。

promise对象的缺点:
一旦新建就会立即执行,无法中途取消;如果不设置回调函数,Promise内部抛出的错误,不会反映到外部;

2基本用法:

es6中规定Promise是一个构造函数,下面创造一个Promise实例:


resolve,reject参数是由js引擎提供,不用自己部署;
resolve函数的作用是在异步操作成功时调用,并将异步操作的结果作为参数传递出去;
reject函数的作用是在异步操作失败时调用,并将异步操作报出的错误作为参数传递出去;
Promise实例生成之后,可以用then方法分别指定resolve和reject状态的回调函数;
在这里插入图片描述
then方法接受两个回调函数作为参数,第一个回调是Promise对象状态变为resolve时调用,第二个则是Promise对象状态变为reject时调用;

Promise新建后会立即执行
在这里插入图片描述
打印结果是1 3 2
新建对象中代码立即执行,then方法属于异步函数,所以会在所有同步函数执行完成之后执行。

下面是异步加载图片的例子:
在这里插入图片描述

如果调用resolve和reject时带有参数,这个参数会传递给回调函数;resolve函数的参数除了正常的函数值外,还可能是另一个Promise实例:
在这里插入图片描述
p2实例的resolve方法将p1作为参数:一个异步操作的结果是返回另一个异步操作;
p1的状态决定了p2的状态。如果p1的状态是pending,那么p2的回调函数就会等待p1的状态改变;如果p1的状态已经是resolved或rejected,那么p2的回调函数将会立刻执行。

Promise在调用了resolve或reject后任务就完成了,后继操作应放到then方法里面执行,所以Promise实例中调用了resolve或reject后在后面最好加上return语句

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值