学习 javascript Promise 部分 什么是 Promise?

深入浅出 javascript promise:第一部分——promise 的本质

大家好,JavaScript 爱好者们!今天,我们将一起探索 JavaScript 中的 Promise,并学习如何更好地理解和使用它。很多人觉得 Promise 复杂难懂,其实不然,只要多加练习,你就能轻松掌握!本文将帮助你理解 Promise 的基础知识,了解其本质以及为何我们需要它。

Promise 是什么?为什么 JavaScript 需要它?

想象一下,你承诺每天早上锻炼,并告知朋友你的锻炼结果。你的承诺本身不会影响你和朋友的生活,朋友只是等待你的通知(承诺成功或失败),以便做出相应的判断或行动。

这个例子阐述了 Promise 作为事件的本质,以及事件连接的两个参与者:消费者(你的朋友)和生产者(你):

学习 javascript Promise 部分 什么是 Promise?

立即学习“Java免费学习笔记(深入)”;

简而言之,JavaScript 中的 Promise 对象具有类似的行为。它允许我们在不阻塞主线程的情况下执行异步任务,并在任务完成后通知订阅者。

让我们通过一个例子来理解 Promise 的使用方法:

学习 javascript Promise 部分 什么是 Promise?

代码解读:

我们使用执行器函数创建一个 Promise 实例(传递给 Promise 构造函数的函数)。执行器函数在 Promise 创建时立即执行。

执行器函数有两个参数:resolve 方法和 reject 方法。这两个方法用于在异步操作完成后完成 Promise。

例如,我们承诺一周内每天早上锻炼。Promise 将持续一周。如果第三天你没有完成锻炼,你可以调用 reject 方法,所有订阅了该 Promise 的人都将收到通知。反之,如果完成了一周的锻炼,你可以在第七天调用 resolve 方法,通知朋友你已成功履行承诺。消费者(你的朋友)无需关心你何时告知结果,他们只需要在收到结果时处理即可。

下图展示了 Promise 的三种状态:“pending”(进行中)、“fulfilled”(已完成)和“rejected”(已拒绝)。Promise 初始状态为“pending”,完成后则变为“fulfilled”或“rejected”,取决于调用了哪个方法。

学习 javascript Promise 部分 什么是 Promise?

需要注意的是,Promise 执行器只能完成一次,后续对 resolve 或 reject 的调用将被忽略。

凹凸工坊-AI手写模拟器 凹凸工坊-AI手写模拟器

AI手写模拟器,一键生成手写文稿

凹凸工坊-AI手写模拟器 500 查看详情 凹凸工坊-AI手写模拟器 当你完成 Promise(调用 resolve 或 reject)时,所有订阅者都将收到包含有效负载的通知,可以通过 Promise 实例的两个特殊方法访问:Promise.prototype.then 和 Promise.prototype.catch。

学习 javascript Promise 部分 什么是 Promise?

Promise.prototype.then 方法可以同时处理成功和失败的情况,因为它接受两个回调函数。

Promise.prototype.catch 方法仅处理失败的情况:

学习 javascript Promise 部分 什么是 Promise?

Promise.prototype.then 用于处理成功的情况。

此外,Promise.prototype.finally 方法用于执行无论结果如何都应该执行的代码:

学习 javascript Promise 部分 什么是 Promise?

该方法不执行任何操作且不返回任何内容,主要用于一些收尾工作,例如向用户显示消息或隐藏加载程序。

接下来,我们来看一个从 API 请求数据、将其转换为 JSON 并输出到控制台的实际例子:

学习 javascript Promise 部分 什么是 Promise?

你会发现,实际应用与我们之前的例子并无太大区别。但需要注意以下几点:

每个 Promise.prototype.then 和 Promise.prototype.catch 处理程序的结果都会传递到下一个处理程序。Response.json 方法返回一个 Promise,该 Promise 在执行后返回 JSON 数据,并传递给下一个处理程序。Promise.prototype.finally 处理程序会将前一个响应传递到下一个响应。

至此,你应该对 Promise 的基础知识有了更深入的理解,包括其使用方法和状态。

总结:

JavaScript Promise 是一个特殊的对象,用于执行异步操作并在完成时通知消费者。Promise 实例有三种状态:“pending”、“fulfilled”和“rejected”。Promise 实例有三个主要方法:“then”、“catch”和“finally”。Promise.prototype.then 用于处理成功和失败的结果。Promise.prototype.catch 用于处理失败的结果。Promise.prototype.finally 用于执行一些清理工作。可以按任意顺序链接处理程序,它们将按顺序执行。前一个 Promise 的结果会传递到下一个 Promise,为了使 Promise 链可扩展,除了“finally”处理程序外,其他处理程序必须返回一个 Promise。

在接下来的文章中,我们将探讨更高级的 Promise 技术,敬请期待!

以上就是学习 javascript Promise 部分 什么是 Promise?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/892785.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
华为Mate60 Pro截屏技巧大揭秘
上一篇 2025年11月28日 15:52:00
暗黑像素迷局Centum登陆Steam 颠覆性叙事引爆玩家好评
下一篇 2025年11月28日 15:52:00

相关推荐

  • Java猜数字游戏:使用While循环实现用户重试

    Java猜数字游戏:使用While循环实现用户重试Java猜数字游戏:使用While循环实现用户重试Java猜数字游戏:使用While循环实现用户重试Java猜数字游戏:使用While循环实现用户重试

    本文旨在指导开发者使用Java语言,通过while循环实现一个简单的猜数字游戏。该游戏会生成一个1到200之间的随机数,并允许用户重复猜测,程序会提示用户的猜测是过高还是过低,直到用户猜中为止。文章将详细讲解如何正确地在循环中获取用户输入,并提供可运行的示例代码,帮助读者理解和掌握while循环在实…

    2026年10月2日 • 用户投稿
    100
  • Remedy财报显示《马克思佩恩1+2》重制进展顺利

    Remedy财报显示《马克思佩恩1+2》重制进展顺利Remedy财报显示《马克思佩恩1+2》重制进展顺利Remedy财报显示《马克思佩恩1+2》重制进展顺利Remedy财报显示《马克思佩恩1+2》重制进展顺利

    根据remedy公布的2025年上半年财务报告,《马克思佩恩1+2》重制版开发工作正稳步推进,并确认与rockstar games保持深度协作。 早年由Remedy打造的《马克思佩恩》系列被誉为游戏史上的经典之作,其标志性的“子弹时间”机制(灵感源自《黑客帝国》)以及浓厚的黑色电影氛围深受玩家与业界…

    2026年10月2日 • 用户投稿
    100
  • 5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档

    5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档5 月上线,微软预告网页版 OneDrive 更新:AI 梳理整合各种文档

    根据微软近期在 microsoft 365 路线图中的更新内容,该公司计划于今年5月为microsoft 365用户提供网页版onedrive云盘服务的升级。此次更新将引入ai功能,用于自动分析、整理和归纳各类文档内容。这项功能将涵盖多种文件类型,包括但不限于doc、docx、fluid、loop、…

    2026年10月2日 • 用户投稿
    100
  • Gemini能识别手写文字吗 Gemini手写识别功能测试

    Gemini能识别手写文字吗 Gemini手写识别功能测试Gemini能识别手写文字吗 Gemini手写识别功能测试Gemini能识别手写文字吗 Gemini手写识别功能测试Gemini能识别手写文字吗 Gemini手写识别功能测试

    本文旨在探讨并测试Gemini是否具备识别手写文字的能力。我们将通过描述其工作原理以及提供一个简单的测试操作过程,帮助用户了解Gemini在处理手写内容方面的性能。整个过程涉及准备手写图像、将其上传至Gemini并观察其反馈,以此来验证和体验其手写识别功能。 ☞☞☞AI 智能聊天, 问答助手, AI…

    2026年10月2日 • 用户投稿
    100
  • 高通钱堃:中国在知识产权保护方面取得了长足发展

    高通钱堃:中国在知识产权保护方面取得了长足发展高通钱堃:中国在知识产权保护方面取得了长足发展高通钱堃:中国在知识产权保护方面取得了长足发展高通钱堃:中国在知识产权保护方面取得了长足发展

    近年来,5g、ai等数字技术的广泛应用,正在助力各行业持续创新发展。而在5g、ai等带来的创新浪潮中,知识产权保护显得尤为重要。最近,第十四届中国知识产权年会在北京召开,本届年会以“数字时代的知识产权”为主题,与会各方围绕知识产权创造、保护、运用、服务、国际合作等方面议题开展了交流。 年会期间,高通…

    2026年10月2日 • 用户投稿
    000
  • Claude支持插件扩展吗 Claude插件安装与使用教程

    Claude支持插件扩展吗 Claude插件安装与使用教程Claude支持插件扩展吗 Claude插件安装与使用教程Claude支持插件扩展吗 Claude插件安装与使用教程Claude支持插件扩展吗 Claude插件安装与使用教程

    针对您提出的“Claude支持插件扩展吗 Claude插件安装与使用教程”这一问题,本篇文章将为您提供详细的解答。我们将首先明确当前Claude在插件支持方面的实际情况,解释为何目前没有用户可以直接安装和使用的“插件”概念,并指导您如何获取关于Claude能力扩展的最新信息。本文旨在帮助您清晰理解C…

    2026年10月2日 • 用户投稿
    300
  • 将 DSA 密钥库证书转换为 RSA 的替代方案

    将 DSA 密钥库证书转换为 RSA 的替代方案将 DSA 密钥库证书转换为 RSA 的替代方案将 DSA 密钥库证书转换为 RSA 的替代方案将 DSA 密钥库证书转换为 RSA 的替代方案

    本文档旨在提供将使用 DSA 算法生成的密钥库证书迁移到 RSA 算法的替代方案,以解决在高版本 Java 环境下(如 Java 11 及以上)不再支持 DSA 算法的问题。由于 DSA 证书无法直接转换为 RSA 证书,本文将探讨通过创建新的 RSA 密钥库并重新签名应用来解决此问题的方法。 由于…

    2026年10月2日 • 用户投稿
    000
  • 『三国志 霸道』新赛季「群星激斗」第三期开幕!

    『三国志 霸道』新赛季「群星激斗」第三期开幕!『三国志 霸道』新赛季「群星激斗」第三期开幕!『三国志 霸道』新赛季「群星激斗」第三期开幕!『三国志 霸道』新赛季「群星激斗」第三期开幕!

    台湾光荣特库摩正式宣布,由三国志系列正统开发商日本光荣特库摩倾力打造的mmo战略模拟手机游戏『三国志 霸道』,已于8月完成最新改版更新,以下将带来本次部分重点内容介绍。 8月14日(四)起,全新赛季「群星激斗」第三期正式揭幕。本次将有吕布、关羽等共计9位英杰强势加入战场,玩家可与这些顶尖武将并肩作战…

    2026年10月2日 • 用户投稿
    000
  • Perplexity AI的答案准确吗 Perplexity AI信息可靠性评估

    Perplexity AI的答案准确吗 Perplexity AI信息可靠性评估Perplexity AI的答案准确吗 Perplexity AI信息可靠性评估Perplexity AI的答案准确吗 Perplexity AI信息可靠性评估Perplexity AI的答案准确吗 Perplexity AI信息可靠性评估

    本文将探讨Perplexity AI答案的准确性问题,并提供一套评估其信息可靠性的方法。我们将详细介绍用户如何通过检查引用来源、核实关键信息等步骤,系统性地验证Perplexity AI提供的答案,帮助用户更好地利用这一工具,确保获取的信息尽可能可靠。 ☞☞☞AI 智能聊天, 问答助手, AI 智能…

    2026年10月2日 • 用户投稿
    000
  • 《生化危机9:安魂曲》全新预告片公开

    《生化危机9:安魂曲》全新预告片公开《生化危机9:安魂曲》全新预告片公开《生化危机9:安魂曲》全新预告片公开《生化危机9:安魂曲》全新预告片公开

    capcom 在 2025 年科隆游戏展开幕之夜带来了《生化危机9:安魂曲》的最新预告,深入揭示了主角格蕾丝·阿什克罗夫特的过往经历。 https://www.php.cn/link/0653943cda604027fee407dc05f10ff5 游戏的故事背景设定在美国中西部的浣熊市,这里曾是制…

    2026年10月2日 • 用户投稿
    000
  • 将 Docx4j 文档转换为 PDF 时如何避免在 /tmp 目录下生成临时图片

    将 Docx4j 文档转换为 PDF 时如何避免在 /tmp 目录下生成临时图片将 Docx4j 文档转换为 PDF 时如何避免在 /tmp 目录下生成临时图片将 Docx4j 文档转换为 PDF 时如何避免在 /tmp 目录下生成临时图片将 Docx4j 文档转换为 PDF 时如何避免在 /tmp 目录下生成临时图片

    本文旨在解决在使用 Docx4j 将 Word 文档转换为 PDF 时,页眉/页脚中的图片默认保存在 /tmp 目录下,导致无法清理的问题。文章将阐述问题的根源,并提供一种规避方案,帮助开发者在 Linux 环境下更有效地管理 Docx4j 生成的临时文件。 在使用 Docx4j 将 Word 文档…

    2026年10月2日 • 用户投稿
    000
  • FGO日服2025剪影实装剩余从者一览-FGO日服2025剪影实装还剩下哪些从者

    FGO日服2025剪影实装剩余从者一览-FGO日服2025剪影实装还剩下哪些从者FGO日服2025剪影实装剩余从者一览-FGO日服2025剪影实装还剩下哪些从者FGO日服2025剪影实装剩余从者一览-FGO日服2025剪影实装还剩下哪些从者FGO日服2025剪影实装剩余从者一览-FGO日服2025剪影实装还剩下哪些从者

    命运冠位指定日服游戏现已进入下半年尾声,距离2025年结束仅剩三个月。年初公布的剪影从者中,仍有部分尚未实装,下面为大家带来fgo日服2025年剩余未实装剪影从者汇总分析。 截至目前,在方舟活动结束之后,FGO日服2025年共实装了19位从者,其中包括13名五星和6名四星从者。 而在年初公开的剪影名…

    2026年10月2日 • 用户投稿
    000
  • [windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项

    [windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项[windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项[windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项[windows工具]批量OCR指定区域图片自动识别内容重命名软件1.3版本使用教程及注意事项

    OCR区域自动识别重命名工具 Paddle版1.3.1 使用指南 工具概述 ocr区域自动识别重命名工具(paddle版1.3.1)是一款基于paddleocr技术开发的批量图片文件重命名软件,能够智能识别图像中的文字区域,并将识别出的文字内容用作新的文件名。当前版本采用先进的pp-ocv5算法,具…

    2026年10月2日 • 用户投稿
    100
  • 多模态AI需要多大算力 多模态AI硬件需求分析

    多模态AI需要多大算力 多模态AI硬件需求分析多模态AI需要多大算力 多模态AI硬件需求分析多模态AI需要多大算力 多模态AI硬件需求分析多模态AI需要多大算力 多模态AI硬件需求分析

    多模态ai的快速发展带来了对计算能力的巨大需求,理解其背后的硬件支撑是关键。本文旨在分析多模态ai为何需要高算力,并剖析其核心硬件需求。我们将通过梳理多模态任务的特点,识别所需的关键硬件组件,并解释这些组件在多模态ai工作流中所扮演的角色,帮助读者理解多模态ai对计算资源的需求构成。 ☞☞☞AI 智…

    2026年10月2日 • 用户投稿
    200
  • sublime如何运行代码c语言

    sublime如何运行代码c语言sublime如何运行代码c语言sublime如何运行代码c语言sublime如何运行代码c语言

    在 Sublime Text 中运行 C 语言代码需要:安装 MinGW 编译器;在 Sublime Text 的首选项中配置编译系统;通过“工具”菜单运行代码,由 MinGW 编译并执行。 Sublime Text 中运行 C 语言代码 第一步:安装编译器 在 Sublime Text 中运行 C…

    2026年10月2日 • 用户投稿
    000
  • 将 Docx4j 文档转换为 PDF 时如何处理临时图片文件

    将 Docx4j 文档转换为 PDF 时如何处理临时图片文件将 Docx4j 文档转换为 PDF 时如何处理临时图片文件将 Docx4j 文档转换为 PDF 时如何处理临时图片文件将 Docx4j 文档转换为 PDF 时如何处理临时图片文件

    在使用 Docx4j 将 Word 文档转换为 PDF 时,特别是通过 XSL-FO 转换方式,经常会遇到临时图片文件管理的问题。尤其是在 Linux 环境下,页眉/页脚中的图片会被保存在默认的 /tmp 目录下,这给清理这些临时文件带来了不便。本文将深入探讨这个问题,并提供一种有效的解决方案。 问…

    2026年10月2日 • 用户投稿
    000
  • 《时间旅者:重生曙光》最新开发者日志发布

    《时间旅者:重生曙光》最新开发者日志发布《时间旅者:重生曙光》最新开发者日志发布《时间旅者:重生曙光》最新开发者日志发布《时间旅者:重生曙光》最新开发者日志发布

    由bloober team精心打造的第三人称生存恐怖新作《时间旅者:重生曙光(cronos: the new dawn)》今日发布最新一期开发者日志,深入揭示游戏背后宏大的世界观与扑朔迷离的剧情脉络。本期内容聚焦三大核心谜题——人类文明覆灭的真相、「旅者」肩负的真正使命,以及首次正式登场的关键角色「…

    2026年10月2日 • 用户投稿
    000
  • DeepSeek有语音交互吗 DeepSeek语音输入输出功能体验

    DeepSeek有语音交互吗 DeepSeek语音输入输出功能体验DeepSeek有语音交互吗 DeepSeek语音输入输出功能体验DeepSeek有语音交互吗 DeepSeek语音输入输出功能体验DeepSeek有语音交互吗 DeepSeek语音输入输出功能体验

    您提出的关于DeepSeek是否有语音交互功能以及如何体验的问题,本文将为您提供解答。我们将介绍DeepSeek在语音方面的现状,并说明如何结合其文本能力与外部工具实现语音输入和输出的体验,方便您进行尝试了解。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek …

    2026年10月2日 • 用户投稿
    100
  • C盘空间满了怎么办?

    C盘空间满了怎么办?C盘空间满了怎么办?C盘空间满了怎么办?C盘空间满了怎么办?

    大家好!之前我们分享了如何通过转移微信和qq缓存来释放c盘空间,但有些小伙伴反映即使这样做了,c盘依然很快就满了。别担心,今天我们将介绍一个终极解决方案——将其他盘的空间转移给c盘,彻底解决你的空间问题! 首先,为什么要这样做呢?主要是因为硬盘中数据过多,重新分区做系统又太麻烦。 幸运的是,我们可以…

    2026年10月2日 • 用户投稿
    000
  • 在Android应用中捕获并分享MPAndroidChart图表截图

    在Android应用中捕获并分享MPAndroidChart图表截图在Android应用中捕获并分享MPAndroidChart图表截图在Android应用中捕获并分享MPAndroidChart图表截图在Android应用中捕获并分享MPAndroidChart图表截图

    本教程详细介绍了如何在Android应用中,利用MPAndroidChart库的图表功能,高效地捕获BarChart(或其他支持的图表)的屏幕截图,并无需将图片永久保存到本地存储,即可通过Android的Intent机制将其无缝分享至其他社交媒体或应用。文章涵盖了从获取图表Bitmap到构建分享In…

    2026年10月2日 • 用户投稿
    400

发表回复

登录后才能评论
关注微信