Promise-01-基础

解决的问题

Promise解决的问题是异步场景下的回调地狱问题,它能够使异步代码更加清晰、简洁。

Promise规范

Promise A+规定:

1、所有的异步场景、都可以看作是一个异步任务,每个异步任务,在js中表现为一个对象,该对象称之为Promise对象,也叫做任务对象。

2、每个任务对象,都应该有两个阶段、三个状态

它们之间存在以下逻辑:

任务总是从未决阶段变到有已决阶段,无法逆行

任务总是从挂起状态变到完成状态或失败状态,无法逆行

任务一旦完成或失败,状态就固定下来,永远无法改变

3、从挂起到完成,叫做resolve,从挂起到失败叫做reject。任务完成时,可能有一个相关数据任务失败时,可能有一个失败原因。

4、可以针对任务进行后续处理,针对完成状态的后续处理称之为onFulfilled

,针对失败状态的后续处理称之为onRejected

Promise API

Promise API是ES6提供的,实现了Promise A+规范

const pro = new Promise((resolve, reject) => {
  // 任务的具体执行流程,该函数会立即被执行
  // 调用 resolve(data),可将任务变为 fulfilled 状态, data 为需要传递的相关数据

  // 调用 reject(reason),可将任务变为 rejected 状态,reason 为需要传递的失败原因

});

pro.then(
  (data) => {
    // onFulfilled 函数,当任务完成后,会自动运行该函数,data为任务完成的相关数据
  },
  (reason) => {
    // onRejected 函数,当任务失败后,会自动运行该函数,reason为任务失败的相关原因
  }
);

示例代码:

    // 任务描述
    const token = function getToken() {
        return new Promise((resolve, reject) => {
            //随机一个0到100的随机数,用来描述任务成功和失败的两中情况
            const num = Math.floor(Math.random() * 100);
            if (num <= 50) {
                resolve("success");
            }else {
                reject("fail");
            }
        })
    }
    //任务结果的后续处理
    token().then(res => {
        console.log(res);
    }, err => {
        console.log(err);
    })
catch方法
.catch(onRejected) = .then(null,onRejected) //两者是等效的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值