什么是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(已失败)这三种状态的变化途径只有2种:

异步操作从 未完成 pending => 已完成 resolved

异步操作从 未完成 pending => 失败 rejected

状态一旦改变,就无法再次改变状态,这也是它名字 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,Promise的三种状态相关推荐

  1. promise的三种状态_一.Promise中核心逻辑的实现

    首先看一下Promise代码: let promise =new Promise((resolve,reject)=>{resolve('成功');//reject('失败'); }) prom ...

  2. 什么是Promise,Promise的三种状态,Promise的方法

    什么是promise Promise是解决异步编程的一种方案,用同步的写法来进行异步请求,Promise是一个构造函数,用new来创建Promise实例对象,回调函数作为它的参数,该回调函数有两个参数 ...

  3. 什么是Promise,Promise的三种状态

    什么是Promise对象: Js中进行异步编程的新的解决方案(传统的解决方案--回调函数和事件),用于表示一个异步操作的最终完成 (或失败), 及其结果值.. 语法上:promise是一个构造函数 简 ...

  4. js三座大山之异步-Promise三种状态及变化

    1.有resolved.rejected.pending三种状态. 2.调用resolve方法会将状态改成resolved,调用rejected方法会将状态改成rejected. 3.状态变成reso ...

  5. fiq中断的入口地址_嵌入式技巧:ARM的三种中断调试方法介绍

    嵌入式软件开发流程 参照嵌入式软件的开发流程.第一步:工程建立和配置.第二步:编辑源文件.第三步:工程编译和链接.第四步:软件的调试.第五步:执行文件的固化. 在整个流程中,用户首先需要建立工程并对工 ...

  6. ai人工智能_当AI接手我们的三种情况时

    ai人工智能 不像Luddites (Unlike the Luddites) In the 19th century, a group of textile workers, know as the ...

  7. spring 数组中随机取几个_别给孩子取这三种名字!截止年末,名字中的这几个字已经烂大街了...

    随着时代的进步,科技的发展,人们的生活水平不断,提高,许多的家庭都在拥有了不错的生活条件之后选择培养自己的下一代,随着宝宝的到来让整个家庭变得更加幸福,然而,许多家长却在给宝宝起名字这件事上放了愁,对 ...

  8. xp mysql字符集与乱码_解决MYSQL中文乱码问题三种方法

    方法三 1>本文将消除乱码分为三步: >消除页面乱码, >消除从mysql教程中读出中文乱码, >消除插入mysql数据库教程中的中文乱码: 15>注意编码表示方式在网页 ...

  9. java c3p0 配置文件_【c3p0】 C3P0的三种配置方式以及基本配置项详解

    数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...

最新文章

  1. python 查看已经安装的模块_教你用Python查看模块的帮助文档,方法和帮助信息...
  2. 入选2021全球青年领袖榜单,蚂蚁何征宇的技术人生
  3. 下载大文件 不经过php 直接让apache发送文件给客户端 mod_xsendfile
  4. 在vue项目中添加特殊字体
  5. 在LoadRunner里何时该用 .NET Vuser协议?
  6. 【iOS】下的读写锁的简单实现
  7. 中国 各大银行bankCode 开户行代码和名称 高清银行图标
  8. 使用Windows聚焦当壁纸
  9. 推荐好用的两个搜索下载书籍网站
  10. android 日历 插件,Android实现日历控件示例代码
  11. python画运动物体的轨迹_canvas动画—圆形扩散、运动轨迹
  12. 2017年1月15日 星期日 --出埃及记 Exodus 22:5
  13. 全网最全软件测试面试题含答案(性能测试+功能测试+接口测试+自动化测试)
  14. ios中在app应用内刷新小组件数据
  15. ACL 2020 | 特定风格标题生成《Hooks in the headline》论文阅读笔记
  16. Centos7 配置网卡链路聚合(转载)
  17. 互联网之父温顿·瑟夫今日访华
  18. U盘启动盘装Linux系统: 以Kali为例
  19. 数电快速入门(二)(复合逻辑运算和逻辑代数的基本定律的介绍)
  20. NBIOT-BC28模块程序操作接口编写(基于STM32F103ZET6)

热门文章

  1. JMeter4.0以上 分布式测试报错 server failed start Listen failed on port
  2. 经典数值优化算法--专题学习
  3. BZOJ 4819: [Sdoi2017]新生舞会
  4. BDD 与DSL 入门
  5. erlang开发环境配置
  6. Android ARM指令学习
  7. (相当全面)node.js 初体验
  8. 访问List的itemRenderer的组件中定义的方法
  9. VB.NET 中的 As New 以及型別指定
  10. 【剑指offer】面试题32:从上到下打印二叉树(java)