ES6-promise

在这里插入图片描述

1 基本概念

  • 名称:

译为“承诺”,这也就表达了将来会执行的操作,代表异步操作;

  • 状态:

一共有三种状态,分别为pending(进行中)、fulfilled(已成功)和rejected(已失败)。

  • 特点:

(1)只有异步操作可以决定当前处于的状态,并且任何其他操作无法改变这个状态;
(2)一旦状态改变,就不会在变。状态改变的过程只可能是:从pending变为fulfilled和从pending变为rejected。如果状态发生上述变化后,此时状态就不会在改变了,这时就称为resolved(已定型)

2 基本用法

Promise 对象是由关键字 new 及其构造函数来创建的。
首先,
介绍一下如何创建一个 Promise;

const promise = new Promise((resolve, reject) => {
    // do something here ...
    if (success) {
        resolve(value); // fulfilled
    } else {
        reject(error); // rejected
    }
});

由上述代码我们可知: 该构造函数接收两个函数作为参数,分别是resolve和reject。
当异步操作执行成功后,会将异步操作结果作为参数传入resolve函数并执行,此时
Promise对象状态从pending变为fulfilled; 失败则会将异步操作的错误作为参数传入reject函数并执行,此时
Promise对象状态从pending变为rejected;

接下来,
我们通过then方法,分别指定resolved状态和rejected状态的回调函数。

  promise.then(function(value) {
      // success
  }, function(error) {
      // failure
  });

then方法可以接收两个回调函数作为参数,第一个回调函数就是fulfilled状态时调用;第二个回调函数就是rejected时调用。这边的第二个参数是可选的,不一定要提供。

all()方法:

Promise 的 all 方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。

race()方法:

race 按字面解释,就是赛跑的意思。race 的用法与 all 一样,只不过 all 是等所有异步操作都执行完毕后才执行 then
回调。而 race 的话只要有一个异步操作执行完毕,就立刻执行 then 回调。

注意:其它没有执行完毕的异步操作仍然会继续执行,而不是停止。

then()方法

then 方法就是把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数。

而 Promise 的优势就在于这个链式调用。我们可以在 then 方法中继续写 Promise 对象并返回,然后继续调用 then
来进行回调操作。

reject()方法:

上面样例我们通过 resolve 方法把 Promise 的状态置为完成态(Resolved),这时 then
方法就能捕捉到变化,并执行“成功”情况的回调。 而 reject 方法就是把 Promise 的状态置为已失败(Rejected),这时
then 方法执行“失败”情况的回调(then 方法的第二参数)

普通函数中的this指向函数被调用的对象,因此对于不同的调用者,this的值是不同的。而箭头函数中并没有自己的this(同时,箭头函数中也没有其他的局部变量,如this,argument,super等),所以箭头函数中的this是固定的,它指向定义该函数时所在的对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值