Skip to content

Promise理解

示例

模拟请求:

Promise说明

Promise是什么

  • Promise 是一个对象,也是一个构造函数
  • Promise 对象是 JavaScript 的异步操作解决方案,为异步操作提供统一接口。

三种状态

  • 等待中(pending):初始状态,既没有被兑现,也没有被拒绝 常见于(网络请求,网速慢的情况下)。
  • 已兑现(fulfilled):意味着操作成功完成 常见于(网络请求成功的情况下)。
  • 已拒绝(rejected):意味着操作失败 常见于(网络请求失败的情况下)

链式调用

js
Promise.prototype.then()
    (常见于)接口返回code==200也只有接口返回状态是200才会进入.then()

Promise.prototype.catch()
    (常见于)接口返回code!=200.catch()

Promise.prototype.finally()
    (现在比较流行做节流处理)接口返回失败和成功都会进入.finally()

示例源代码

接口请求示范

js
<a-button type="primary" :loading="disabled" @click="newButton">{{ disabled ? '等待请求中...' : '模拟请求' }}</a-button>

function newButton() {
    // 开启阀门,只有按钮事件执行完毕才会继续执行
    disabled.value = true
    getDataQuery()
        .then(res => {
            ElMessage.success(res as string)
        })
        .catch(() => {
            ElMessage.error('接口请求失败')
        })
        .finally(() => {
            disabled.value = false
        })
}

function getDataQuery() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('接口请求成功')
        }, 2000)
    })
}