什么是Promise,Promise的三种状态[通俗易懂]

什么是Promise,Promise的三种状态[通俗易懂]什么是Promise对象:Js中进行异步编程的新的解决方案(传统的解决方案——回调函数和事件),用于表示一个异步操作的最终完成(或失败),及其结果值.。 语法上:promise是一个构造函数 简单来说,promise对象用来封装一个异步操作并可以获取其结果语法:newPromise(function(resolve,reject){…}/*e…

大家好,又见面了,我是你们的朋友全栈君。

什么是Promise对象:

  • Js中进行异步编程的新的解决方案(传统的解决方案——回调函数和事件),用于表示一个异步操作的最终完成 (或失败), 及其结果值.。
  • 语法上:promise是一个构造函数
  • 简单来说,promise对象用来封装一个异步操作并可以获取其结果

语法:

new Promise(function (resolve, reject) {
    ...    
} /* executor */)

executor:executor是带有 resolve 和 reject 两个参数的函数 。Promise构造函数执行时立即调用executor 函数, resolve 和 reject 两个函数作为参数传递给executor(executor 函数在Promise构造函数返回所建promise实例对象前被调用)。resolve 和 reject 函数被调用时,分别将promise的状态改为fulfilled(完成)或rejected(失败)。executor 内部通常会执行一些异步操作,一旦异步操作执行完毕(可能成功/失败),要么调用resolve函数来将promise状态改成fulfilled,要么调用reject 函数将promise的状态改为rejected。如果在executor函数中抛出一个错误,那么该promise 状态为rejected。executor函数的返回值被忽略。

 

promise 有三种状态

Pending(进行中,初始状态,既不是成功,也不是失败状态。)、Resolved(已完成,又称 Fulfilled)、Rejected(已失败)

  1. 这三种状态的变化途径只有2种:
  2. 异步操作从 未完成 pending => 已完成 resolved
  3. 异步操作从 未完成 pending => 失败 rejected
  4. 状态一旦改变,就无法再次改变状态,这也是它名字 promise-承诺 的由来,一个promise对象只能改变一次

pending 状态的 Promise 对象可能会变为fulfilled 状态并传递一个值给相应的状态处理方法,也可能变为失败状态(rejected)并传递失败信息。当其中任一种情况出现时,Promise 对象的 then 方法绑定的处理方法(handlers )就会被调用(then方法包含两个参数:onfulfilled 和 onrejected,它们都是 Function 类型。当Promise状态为fulfilled时,调用 then 的 onfulfilled 方法,当Promise状态为rejected时,调用 then 的 onrejected 方法, 所以在异步操作的完成和绑定处理方法之间不存在竞争)。

因为 Promise.prototype.then 和 Promise.prototype.catch 方法返回promise 对象, 所以它们可以被链式调用。

什么是Promise,Promise的三种状态[通俗易懂]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142969.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月10日 下午8:20
下一篇 2022年5月10日 下午8:40


相关推荐

  • OpenClaw 从安装到稳定运行:超详细配置教程(Debian/Ubuntu/WSL,含工具权限/浏览器/通道/排错)

    OpenClaw 从安装到稳定运行:超详细配置教程(Debian/Ubuntu/WSL,含工具权限/浏览器/通道/排错)

    2026年3月13日
    3
  • 地心一号-基于STM8的超迷你自平衡小车-DIY套件

    地心一号-基于STM8的超迷你自平衡小车-DIY套件大家好 我是起航 我又来了 这次跟大家聊聊平衡小车 了解我的朋友都知道 我极有可能会把帖子写的又臭又长 所以 做好准备 上车吧 先说项目初衷 想给我外甥做个玩具 是的 就这么简单 但是做的时候发现 呵呵 外甥是 2010 年 11 月份生的 现在上小学了 萌生这个想法的时候是 2016 年 那时做为一名电子工程师经常在我姐面前吹牛 说我有多厉害 我姐说 你给我做个空调吧 家里缺个空调

    2026年3月26日
    2
  • Wireshark抓包ARP分析

    Wireshark抓包ARP分析ARP 原理 检查 ARP 缓存发送 ARP 请求添加 ARP 表项发送 ARP 应答添加 ARP 表项第一步 查看本地 ARP 信息 arp a 查看 arp 信息 arp d 清楚 arp 缓存 管理员身份 第二步 打开 wireshark 开始抓包第三步 ping 本网段内的任意主机 ping10 0 105 111 自己主机的 ip 10 0 105 22 第四步 过滤信息 arp icmp 分析 A

    2026年3月16日
    1
  • openclaw-飞书正式版插件 部署攻略 windows

    openclaw-飞书正式版插件 部署攻略 windows

    2026年3月17日
    2
  • 从零开始学习Android开发[通俗易懂]

    从零开始学习Android开发[通俗易懂]1.首先有一点点JAVA的基础知识建议阅读:https://www.runoob.com/java/java-basic-syntax.html讲的比较细,只看到高阶之前即可。2.推荐《第一行代码:Android(第2版)》第一行代码第二版,被Android开发者誉为“Android学习第一书”。全书系统全面、循序渐进地介绍了Android软件开发的必备知识、经验和技巧。…

    2022年6月25日
    22
  • python global关键字_python中global是什么意思

    python global关键字_python中global是什么意思第一,两者的功能不同。global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。第二,两者使用的范围不同。global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了

    2025年9月22日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号