Promise详解


1.定义

Promise 是 JavaScript 中用于异步编程的一种对象。它代表了一个异步操作的最终完成(或失败)及其结果值。

2.语法

let myPromise = new Promise((resolve, reject) => {
  // 异步操作
  if (/* 异步操作成功 */) {
    resolve(value); // 将 Promise 的状态变为 Fulfilled
  } else {
    reject(error); // 将 Promise 的状态变为 Rejected
  }
});

参数
1.Pending(进行中):初始状态,既不是成功,也不是失败。
2.Fulfilled(已成功):意味着操作成功完成。
3.Rejected(已失败):意味着操作失败。

tips:Promise 一旦从 Pending 状态变为 Fulfilled 或 Rejected 状态,就不会再变,这种状态称为“settled”(已定型)。

3.示例

基本的 Promise 示例

// 创建一个 Promise
let myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    // 模拟异步操作成功
    resolve('Promise 成功');
  }, 2000);
});

// 使用 then 处理 Promise
myPromise.then((value) => {
  console.log(value); // 输出:Promise 成功
}).catch((error) => {
  console.error(error); // 处理错误
});

Promise 提供了 .then()、.catch() 和 .finally() 方法来处理异步操作的结果:

.then(onFulfilled, onRejected):接收两个函数参数,第一个用于处理成功的情况,第二个用于处理失败的情况。
.catch(onRejected):只接收一个函数参数,用于处理失败的情况。
.finally(onFinally):无论成功或失败都会执行,通常用于清理工作。

链式调用 Promise

let promise1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise1 成功');
  }, 1000);
});

let promise2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise2 成功');
  }, 2000);
});

promise1
  .then((value) => {
    console.log(value); // 输出:Promise1 成功
    return promise2;
  })
  .then((value) => {
    console.log(value); // 输出:Promise2 成功
  })
  .catch((error) => {
    console.error(error); // 处理错误
  });

4.静态方法

Promise 还有一些静态方法,如 Promise.all() 和 Promise.race(),用于处理多个 Promise:
Promise.all(iterable):接收一个 Promise 对象的数组,只有当所有的 Promise 都成功时,才会返回一个成功的 Promise,如果有一个失败,则立即返回失败的 Promise。
Promise.race(iterable):同样接收一个 Promise 对象的数组,但只要有一个 Promise 完成(无论是成功还是失败),就返回那个 Promise 的结果。

5.使用场景

Promise 广泛应用于需要处理异步操作的场景,如网络请求、文件读写、定时器等。

Promise 是现代 JavaScript 异步编程的核心,它简化了异步代码的写法,使得代码更加清晰和易于维护。随着 ES2017 引入的 async/await 语法,Promise 的使用变得更加简洁和直观。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值