New Promise() 基础教程

作者:十万个为什么2024.02.16 23:02浏览量:7

简介:本文将介绍 JavaScript 中的 Promise 对象,特别是 New Promise() 的基本概念、用法和常见问题。

在 JavaScript 中,Promise 是一个代表异步操作最终完成或失败的对象。它允许你以一种同步的方式编写异步代码,从而提高代码的可读性和可维护性。Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。

New Promise() 是创建 Promise 对象的一种方式,它接受一个函数作为参数,该函数接受两个参数:resolve 和 reject。resolve 用于将 Promise 对象的状态设置为已成功,并传递结果值给 then 方法;reject 用于将 Promise 对象的状态设置为已失败,并传递错误原因给 catch 方法。

下面是一个简单的 New Promise() 的例子:

  1. let promise = new Promise((resolve, reject) => {
  2. // 异步操作,比如网络请求
  3. setTimeout(() => {
  4. resolve('成功的结果'); // 异步操作成功,调用 resolve
  5. }, 1000);
  6. });
  7. promise.then(result => {
  8. console.log(result); // 输出:'成功的结果'
  9. }).catch(error => {
  10. console.log(error); // 不会执行
  11. });

在这个例子中,我们创建了一个新的 Promise 对象,并在异步操作(这里是一个延迟了1秒的 setTimeout)成功时调用 resolve 方法。然后,我们使用 then 方法处理成功的结果,使用 catch 方法处理失败的原因。由于我们的异步操作是成功的,所以 catch 方法不会被执行。

需要注意的是,Promise 只能被解析一次。一旦 Promise 的状态从 pending 变为 fulfilled 或 rejected,它就不会再改变状态。因此,如果你再次调用 resolve 或 reject 方法,它们将不会有任何效果。

另外,如果你想在 Promise 被解析或拒绝时执行一些操作(比如清理资源或报告错误),你可以使用 finally 方法。finally 方法接收一个函数作为参数,无论 Promise 的状态如何,这个函数都会被执行。

下面是一个使用 finally 方法的例子:

  1. let promise = new Promise((resolve, reject) => {
  2. // 异步操作
  3. setTimeout(() => {\n