尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

完整教程:一篇读懂Pormise!!【前端ES6】

完整教程:一篇读懂Pormise!!【前端ES6】
📅 发布时间:2026/6/19 1:40:39

完整教程:一篇读懂Pormise!!【前端ES6】

2025-09-17 20:13  tlnshuju  阅读(0)  评论(0)    收藏  举报

测试说我们程序员就爱说“不应该啊,我本地没问题呀”…

目录

  • promise
    • 1.promise的定义
    • 2. Promise 的创建
    • 3. Promise 的方法
      • 3.1 实例方法
      • 3.2 静态方法
    • 4. Promise 链式调用
    • 5. Promise 的工作机制
    • 6.举个栗子
    • 7. 总结

promise

==Promise 是 JavaScript 中用于处理异步操作的对象,它用来表示一个 可能现在、将来或者永远不会结束的异步操作,并且能在异步操作完成后得到结果或捕获错误。==通过 Promise,可以更加清晰地处理异步代码,避免回调地狱。

1.promise的定义

Promise 其实就是异步操作的占位符,它有三种状态:

  • Pending(等待中):Promise 创建时,状态为 Pending,表示异步操作正在进行中。【初始状态】
  • Fulfilled(已成功):如果异步操作成功(即调用 resolve),状态变为 Fulfilled,然后执行 .then(onFulfilled) 回调。【成功】
  • Rejected(已失败):如果异步操作失败(即调用 reject),状态变为 Rejected,然后执行 .catch(onRejected) 或 .then(null, onRejected) 回调。【失败】
状态含义能否改变
Pending(等待中)异步操作正在进行可以变为 Fulfilled 或 Rejected
Fulfilled(已成功)异步操作成功完成不可再改变
Rejected(已失败)异步操作失败不可再改变

注意:一旦状态从 Pending 变为 Fulfilled 或 Rejected,就 不可再改变。

在这里插入图片描述

2. Promise 的创建

使用 new Promise(executor) 创建一个 Promise:

const promise = new Promise((resolve, reject) =>
{
// 异步操作
const success = true;
if (success) {
resolve("操作成功");
// 变为 Fulfilled
} else {
reject("操作失败");
// 变为 Rejected
}
});
  • executor 是立即执行的函数
  • resolve(value):将状态变为 Fulfilled,并返回结果
  • reject(reason):将状态变为 Rejected,并返回错误

3. Promise 的方法

3.1 实例方法

then(onFulfilled, onRejected)

  • 当 Promise 状态为 Fulfilled 时,执行 onFulfilled。
  • 当 Promise 状态为 Rejected 时,执行 onRejected(可选)。
promise.then(
result => console.log("成功:", result),
error => console.error("失败:", error)
);

catch(onRejected)

  • 用于捕获失败(Rejected)状态。
  • 等价于 then(null, onRejected)。
promise
.then(result => console.log(result))
.catch(error => console.error(error));

finally(callback)

  • 无论 Promise 成功或失败,都会执行 callback。
  • 不会修改 Promise 的值。
promise
.finally(() => console.log("操作完成"));

3.2 静态方法

方法功能
Promise.resolve(value)返回一个已成功的 Promise
Promise.reject(reason)返回一个已失败的 Promise
Promise.all(promises)等待所有 Promise 完成,全部成功才返回结果,否则失败
Promise.race(promises)只要第一个 Promise 完成,就返回结果或错误
Promise.allSettled(promises)等待所有 Promise 完成,不管成功或失败都返回状态
Promise.all([
Promise.resolve(1),
Promise.resolve(2),
Promise.resolve(3)
]).then(values => console.log(values));
// [1,2,3]

4. Promise 链式调用

  • then 方法返回一个新的 Promise,可以连续调用。
  • 链式调用可以顺序处理异步操作,避免回调地狱。
new Promise((resolve, reject) =>
{
resolve(1);
})
.then(result =>
{
console.log(result);
// 1
return result + 1;
})
.then(result =>
{
console.log(result);
// 2
});

5. Promise 的工作机制

  1. 创建 Promise → 状态为 Pending
  2. 执行异步操作
  3. 操作成功 → 调用 resolve → 状态变为 Fulfilled
  4. 操作失败 → 调用 reject → 状态变为 Rejected
  5. then / catch / finally → 注册回调函数
  6. 状态改变后 → 执行对应的回调函数

Promise 内部采用微任务队列(microtask)机制,回调会在当前同步代码执行完毕后才执行。

6.举个栗子

function asyncTask(flag) {
return new Promise((resolve, reject) =>
{
setTimeout(() =>
{
if (flag) {
resolve("任务完成");
} else {
reject("任务失败");
}
}, 1000);
});
}
asyncTask(true)
.then(result => console.log(result) // 任务完成 ) 
.catch(error => console.error(error) // 任务失败 )
.finally(() => console.log("操作结束"));

输出:

任务完成
操作结束

7. 总结

  • Promise 是异步编程的解决方案
  • 有三种状态:Pending、Fulfilled、Rejected
  • Promise 的状态一旦改变,不能再改变(Pending -> Fulfilled 或 Rejected)
  • 提供 then、catch、finally 方法处理结果(then() 用于处理成功的回调,catch() 用于处理失败的回调。)
  • 支持链式调用和静态方法处理多个异步操作
  • 内部机制保证状态不可逆,回调异步执行(微任务队列)

相关新闻

  • P9753 [CSP-S 2023] 消消乐
  • Jenkins CVE-2018-1000600漏洞利用与SSRF攻击分析
  • 详细介绍:Python:OpenCV 教程——从传统视觉到深度学习:YOLOv8 与 OpenCV DNN 模块协同实现工业缺陷检测

最新新闻

  • 从CVE-2026-24763看沙箱逃逸:环境变量注入如何攻破AI智能体安全防线
  • 【人员】人员批量处理与外部数据导入
  • 5分钟快速上手OpenVSP:NASA开源飞机设计软件的完整教程
  • 从人脸识别到AR面具:技术实现与创意应用全解析
  • MPC801外部信号全景解析:从引脚到系统交互
  • 2026 年 6 月上海婚姻律师榜 专业靠谱婚家纠纷处理律师执业全梳理 - 外贸老黄

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号