Promise-1 基础

111 阅读1分钟

Promise 是 ES6 新增的语法,解决了回调地狱的问题。

1.基础概念

Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值。

一个 Promise 必然处于以下几种状态之一:

  • 待定(pending) : 初始状态,既没有被兑现,也没有被拒绝。
  • 已兑现(fulfilled) : 意味着操作成功完成。
  • 已拒绝(rejected) : 意味着操作失败。

使用的基础流程:

// 1. 创建一个新的promise对象
const p = new Promise((resolve, reject) => {// 执行器函数  同步回调
    console.log('执行 excutor')
    // 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);
})
console.log('new Promise()之后')
// setTimeout(() => {
p.then(
    value => { // 接收得到成功的value数据    onResolved
        console.log('成功的回调', value)
    },
    reason => {// 接收得到失败的reason数据  onRejected
        console.log('失败的回调', reason)
    }
)
// }, 2000);

image.png

2.基础API

参考MDN

  • Promise.prototype.then:返回一个Promise。它最多需要有两个参数:Promise 的成功和失败情况的回调函数。
  • Promise.prototype.catch返回一个Promise。并且处理拒绝的情况。它的行为与调用Promise.prototype.then(undefined, onRejected) 相同。obj.catch(onRejected) 的内部实现基于 obj.then(undefined, onRejected)