VuePressVuePress
首页
  • 基础
  • UI
  • JavaScript
  • CSS
  • postcss
  • Vue3
  • Vue的设计与实现
  • 前端常用插件
  • PHP
  • Laravel
  • Linux
  • 线性代数
Category
AI
jiyun
Timeline
首页
  • 基础
  • UI
  • JavaScript
  • CSS
  • postcss
  • Vue3
  • Vue的设计与实现
  • 前端常用插件
  • PHP
  • Laravel
  • Linux
  • 线性代数
Category
AI
jiyun
Timeline
  • 基础知识

    • 基础知识
    • promise简介
    • promise1
    • promise2
    • 点语法和方括号语法的区别
    • 常用字符串数组过滤函数
  • 全局对象

    • 数组
    • 对象
    • 字符串
  • dom

    • HTMLElement和Node有何不同
  • 字符串

    • 字符串截取导致的BUG
  • 媒体查询

    • 媒体查询
  • WebWorker

    • Web Worker

详细介绍下 Promise

Promise 是 JavaScript 中用于处理异步操作的对象。它代表了一个可能现在、未来或永远不可能完成的操作。

以下是 Promise 的主要特点和用法:

  1. 状态:Promise 有三种状态:
    • Pending(进行中): 初始状态,既不是成功,也不是失败状态。
    • Fulfilled(已成功): 表示操作成功完成。
    • Rejected(已失败): 表示操作失败。
  2. 基本用法:
const promise = new Promise((resolve, reject) => {
    // 异步操作
    if (/* 操作成功 */) {
    resolve(value);
    } else {
    reject(error);
    }
});
  1. 链式调用:Promise 可以通过 .then(), .catch(), 和 .finally() 方法进行链式调用。
promise
    .then(result => {
    // 处理成功结果
    })
    .catch(error => {
    // 处理错误
    })
    .finally(() => {
    // 无论成功失败都会执行
    });
  1. 异步操作的组合:
  • Promise.all(): 等待所有 promises 完成(或第一个失败)。
  • Promise.race(): 等待第一个完成的 promise。
  • Promise.allSettled(): 等待所有 promises 完成,无论成功失败。
  • Promise.any(): 等待第一个成功的 promise。
  1. 异步函数:使用 async/await 语法可以更简洁地处理 Promise:
async function fetchData() {
     try {
       const result = await promise;
       // 处理结果
     } catch (error) {
       // 处理错误
     }
   }
  1. 错误处理:Promise 链中的错误会沿着链向下传播,直到被捕获。
  2. 微任务队列:Promise 的回调函数会被放入微任务队列,在当前宏任务结束后立即执行。
  3. Promise 的主要优点:
  • 改善了回调地狱问题
  • 提供了更好的错误处理机制
  • 使异步代码更易读和维护
  • 支持并行操作

reject 和 resolve 是 Promise 对象中的两个重要概念。让我为您详细解释一下:

  • resolve(解决):
    • 代表 Promise 成功完成。
    • 当调用 resolve() 时,Promise 的状态变为 "fulfilled"(已完成)。
    • resolve() 可以传递一个值,这个值会作为 .then() 方法中回调函数的参数。
  • reject(拒绝):
    • 代表 Promise 失败或出错。
    • 当调用 reject() 时,Promise 的状态变为 "rejected"(已拒绝)。
    • reject() 通常传递一个错误对象,这个对象会作为 .catch() 方法中回调函数的参数。
Last Updated:
Contributors: BaronYan
Prev
promise1
Next
点语法和方括号语法的区别