Promise

文章目录

promise是什么

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

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

promise的状态改变

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

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

流程

Promise

基本使用

//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

上一篇:pytest内置mark标记说明


下一篇:python.unittest中常用断言方法