Promise

promise是什么

宏观来说:
promise是JS中进行异步编程的新的解决方案

具体表达:
从语法来说:promise是一个构造函数
从功能来说:promise对象用来封装一个异步操作并可以获取其结果

promise的状态改变

pending --> resolved (成功)
pending --> rejected (失败)

  1. 只有2种状态,而且一个promise对象只能改变一次
  2. 无论变为成功还是失败,都会有结果数据
  3. 成功数据一般称为value,失败的结果数据一般称为reason

流程

在这里插入图片描述

基本使用

//1、创建一个新的promise对象
const p = new Promise((resolve, reject) => {
    //2、执行异步任务
    setTimeout(() => {
        const time = Date.now()
        //3.1.如果成功了,调用resolve(value)
        if (time % 2 == 0) {
            resolve('成功的数据:time=' + time)
        } else {
            //3.2.如果失败了,调用reject(reason)
            reject('失败的数据:time=' + time)
        }
    }, 1000)

})
p.then(
    value => {
        console.log('成功的回调', value);
    },
    reason => {
        console.log('失败的回调', reason);
    }
)

为什么要使用promise

1、指定回调函数的方式更加灵活

旧的(纯回调函数):必须在启动异步任务前指定

promise:启动异步任务 => 返回promise对象 => 给promise对象绑定回调函数(甚至可以再异步任务结束之后再指定)

2、支持链式调用,解决回调地狱问题

什么是回调地狱:回调函数嵌套调用,外部回调函数异步执行的结果是嵌套的回调函数执行的条件

回调地狱缺点:不便于阅读 而且 不便于异常处理

解决方案:promise链式调用

终极解决方案:async/await

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值