微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐