什么是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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PKCS11接口解析「建议收藏」

    PKCS11接口解析「建议收藏」pkcs密码中间件位于上层应用和底层安全设备之间,应用基于PKCS#11标准接口开发各类应用程序。主要包括2个库主API库:提供给应用的PKCS11接口。 tokenDLL库:由主API库调用,完成从上向下到指定设备的套接。 安全密码设备:安全服务资源和实施的载体,完成具体安全功能支撑。表pkcs11函数接口 种类 函数 …

    2022年5月24日
    40
  • vmware workstation怎么使用虚拟机_虚拟机的使用方法

    vmware workstation怎么使用虚拟机_虚拟机的使用方法本文参照:https://www.linuxidc.com/Linux/2017-03/141972.htmVMwareWorkstation虚拟机使用方法图文详解云最成熟的架构是IaaS(I

    2022年8月6日
    7
  • Schrodinger分子动力模拟软件与UltraLAB建模工作站配置探讨

    Schrodinger分子动力模拟软件与UltraLAB建模工作站配置探讨Schrodinger2018-1是Schrodinger软件的最新版本,也是目前计算化学领域的领导者,能够为生命科学和材料研究提供软件解决方案和服务。该软件并不是独立,而是一个软件合集包,由maestro、maesrtoelements、materialsscience、bioluminate、knime、canvas、mmshare、aacg、Glide、Impact、Jagua…

    2022年5月25日
    43
  • UPS与EPS的区别作用[通俗易懂]

    UPS与EPS的区别作用[通俗易懂]UPS与EPS的区别作用

    2022年4月20日
    84
  • Floyed算法[通俗易懂]

    Floyed算法[通俗易懂]这一讲简单介绍一下Floyed算法。话不多说,先放一道题帮助理解(其实是懒得描述具体应用场景)。FroggerFreddyFrogissittingonastoneinthemiddleofalake.SuddenlyhenoticesFionaFrogwhoissittingonanotherstone.Heplanstovisit

    2022年6月29日
    27
  • matlabGUI入门

    matlabGUI入门1基础知识1.1函数1.2数据类型1.3绘图1.4其它2GUIDE2.1创建GUI界面2.2模板选择2.3控件2.4对象浏览器2.5回调函数2.6属性检查器2.7数据传输由窗口、菜单、图标、光标、按键、对话框和文本等各种图形对象组成的用户界面叫作图形用户界面(GUI)。它可以允许用户定制与MATLAB的交互方式,从而命令窗口不再是唯一与MATLAB的交互方式。用户通过鼠标或键盘选择、激活这些图形对象,使计算机产生某种动作或变化。

    2022年6月5日
    56

发表回复

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

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