Promise是一种异步操作的解决方案,将写法复杂的传统的回调函数和监听事件的异步操作,用同步代码的形式表达出来。避免了多级异步操作的回调函数嵌套。

1、主要用于异步计算

2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果

3、可以在对象之间传递和操作promise,帮助我们处理队列

Promise是一个对象,它的内部其实有三种状态。

初始状态( pending )。

已完成( resolve): resolve 方法可以使 Promise 对象的状态改变成成功

已拒绝( reject ): reject 方法则是将 Promise 对象的状态改变为失败

Promise常用的三种方法

第一种:then 表示异步成功执行后的数据状态变为resolve

第二种:catch表示异步失败后执行的数据状态变为reject

第三种:all表示把多个没有关系的Promise封装成一个Promise对象使用then返回一个数组数据。

Promise 构造函数有两个变量 resolve 用于返回异步执行成功的函数 reject 用于返回异步执行失败的函数,配合then与catch一起使用

Promise的使用:

1.Ajax异步请求的时候

2.函数嵌套层级多的时候使用promise,优点在于,回调函数变成了链式写法,程序的流程可以看得很清楚,而且有一整套的配套方法,可以实现许多强大的功能。

Promise解析(待完成)的更多相关文章

  1. Promise 解析

    Promise 由于js的语言特性(用户交互)和工作环境(浏览器脚本),决定了它是单线程工作,所以两段脚本不能同时运行,但为了实现功能,所以人们使用了事件和回调来初步解决这个问题,例如(addEven ...

  2. Promise,Generator(生成器),async(异步)函数

    Promise 是什么 Promise是异步编程的一种解决方案.Promise对象表示了异步操作的最终状态(完成或失败)和返回的结果. 其实我们在jQuery的ajax中已经见识了部分Promise的 ...

  3. Netty源码解析—客户端启动

    Netty源码解析-客户端启动 Bootstrap示例 public final class EchoClient { static final boolean SSL = System.getPro ...

  4. 基于PromiseA+规范实现一个promise

    实现如果下规范的promise Aplus规范 1,promise是一个类:有三个状态 pending/等待态 fulfilled/成功态 rejected/失败态 2,promise默认执行器立即执 ...

  5. AngularJS之代码风格36条建议【一】(九)

    前言 其实在新学一门知识时,我们应该注意下怎么书写代码更加规范,从开始就注意养成一个良好的习惯无论是对于bug的查找还是走人后别人熟悉代码都是非常好的,利人利己的事情何乐而不为呢,关于AngularJ ...

  6. 使用 Promises 编写更优雅的 JavaScript 代码

    你可能已经无意中听说过 Promises,很多人都在讨论它,使用它,但你不知道为什么它们如此特别.难道你不能使用回调么?有什么了特别的?在本文中,我们一起来看看 Promises 是什么以及如何使用它 ...

  7. ES6核心内容精讲--快速实践ES6(三)

    Promise 是什么 Promise是异步编程的一种解决方案.Promise对象表示了异步操作的最终状态(完成或失败)和返回的结果. 其实我们在jQuery的ajax中已经见识了部分Promise的 ...

  8. Netty源码分析(三):客户端启动

    Bootstrap Bootstrap主要包含两个部分,一个是服务器地址的解析器组AddressResolverGroup,另一个是用来工作的EventLoopGroup. EventLoopGrou ...

  9. js async await 终极异步解决方案

    既然有了promise 为什么还要有async await ? 当然是promise 也不是完美的异步解决方案,而 async await 的写法看起来更加简单且容易理解. 回顾 Promise Pr ...

随机推荐

  1. PTA 报数

    6-3 报数 (20 分)   报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号.从第一个人开始报数,报到m(<)的人退出圈子:下一个人从1开始报数,报到m的人退出圈子.如此下去,直到留 ...

  2. 攻防世界 maze NJUPT CTF 2017

    迷宫题 1 __int64 __fastcall main(__int64 a1, char **a2, char **a3) 2 { 3 signed __int64 mid_i; // rbx 4 ...

  3. 前瞻|Amundsen的数据血缘功能

    目前,Amundsen并不支持表级别和列级别的数据血缘功能,也没有办法展示数据的来龙去脉. 作为Amundsen一项非常核心的功能,Lineage功能早已经提上日程,并进入设计与研发阶段.本位将展示此 ...

  4. C语言const是如何保证变量不被修改的?

    这小段文章要理清楚的是,在C语言中,$const$是如何保证变量不被修改的? 我们可以想到两种方式: 第一种,由编译器来阻止修改$const$变量的语句,让这种程序不能通过编译: 第二种,由操作系统来 ...

  5. elementui 表格 如何使操作中隐藏一个按钮

    <el-table-column label="权限"min-width="100"> <template scope="scope ...

  6. angular+ionic -- 启动命令

    初始angular+ionic项目,启动需ionic的启动命令: ionic serve

  7. JavaWeb 补充(JSP&EL&JSTL)

    1. JSP:     1. 指令     2. 注释     3. 内置对象 2. MVC开发模式 3. EL表达式 4. JSTL标签 5. 三层架构 JSP: 1. 指令     * 作用:用于 ...

  8. day-4 xctf-pwn CGfsb

    xctf-pwn CGfsb 传送门:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id= ...

  9. k8s在线和离线批量修改镜像地址的两种方式

    背景介绍 有时往k8s集群里部署一堆服务的时候,需要拷贝一堆yaml文件,当然还有其他方式部署,例如通过建立一个一个的流水线等方式,但是这太慢了,虽然是一劳永逸,但是如果说仅仅是部署一次那就可太费劲了 ...

  10. shell脚本 3 流程控制

    shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介 ...