2019独角兽企业重金招聘Python工程师标准>>>

一、ES6的Promise语言标准、Promise/A+规范

1、Promise是Js针对异步场景的解决方案。

Promise是一个对象,同时是一种规范,针对异步操作约定统一接口,表示一个异步操作的最终结果,以同步方式写代码,执行的操作是异步的,保证程序的执行顺序是同步的。

2、Promise对象的三种状态

  1. 未完成(pending)
  2. 已完成(fulfilled)
  3. 失败(rejected)

三种状态变化只能由  未完成----失败  或  未完成----已完成

3、Promise/A+规范

PromiseA与A+不同点

  1. A+规范通过术语thenable 来去区分promise对象,当一个对象拥有 then()函数时,这对象就被认为是一个promise
  2. A+定义onFulfilled/onRejected必须作为函数来调用,而且调用过程必须是异步的,成功、失败返回promise的处理过程,必须作为函数来调用,并且处理过程是异步的。
  3. A+严格定义then方法链式调用时onFulfilled(成功)/onRejeced(失败)的调用顺序。

二、如何使用

通过promise对象的 then()方法把流程里面依次执行的异步操作,也就是回调函数,现在直接传递给Promise对象的then()方法。

Promise then方法

  1. then方法返回一个promise对象
  2. then方法接受两个·参数,成功时的回调函数,失败时的回调函数。
  3. 成功时的回调函数,参数为上一个promise的值
  4. 失败回调函数参数为失败原因
promiseObj.then( onFulfilled , onRejected)onFulfilled = function(value){return promiseObj2}onRejected = function(err){}

执行原理:

Promise会保证 then方法执行的顺序,第一个Promise完成时,后面链式调动的then方法,参数里的回调函数会依次调用,同时这些回调函数不是在执行 then()方法时立刻执行,而是必须等待前面Promise完成后才能执行。

Promise特点

回调函数可以写成规范的链式写法,程序流程很清楚,一整套流程可以实现为多个异步操作,部署一个回调函数,或为多个回调函数中抛出的错误,统一指定一个方法。

    promiseAnimate(ball1,100).then(function(){return promiseAnimate(ball2 ,200)}).then(function(){return promiseAnimate(ball3 ,300)}).then(function(){return promiseAnimate(ball3 ,150)}).then(function(){return promiseAnimate(ball2 ,150)}).then(function(){return PromiseAnimate(ball1 ,150)})

Promise库

  • bluebird
  • Q
  • then.js
  • es6-promise
  • ypromise
  • saync
  • native-promise-only

bluebird既兼容Promise类库,又扩展了取消promise对象的运行,取的Promise的运行进度,以及错误处理的扩展监测。

转载于:https://my.oschina.net/u/2991733/blog/898838

NodeJS基础2---2 Promise详解相关推荐

  1. 【流媒体服务器Mediasoup】 NodeJs与C++信令通信详解及Linux下管道通信的详解(五)

    目录 前言 匿名管道进程间通信 进程间管道 的创建与图解 MediaSoup中的管道创建 MediaSoup Channel的创建 NodeJs和 C++ 管道通信的过程 MediaSoup 消息确认 ...

  2. LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用

    LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用. ...

  3. 【Java基础】HashMap原理详解

    [Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...

  4. 电子元器件从入门到精通pdf_电子元件入门基础,常用电子元器件详解大全作用-涨知识必读...

    1.电子元器件筛选的必要性 电子元器件的固有可靠性取决于产品的可靠性设计, 在产品的制造过程中, 由于人为因素或原材料. 工艺条件. 设备条件的波动, 最终的成品不可能全部达到预期的固有可靠性. 在每 ...

  5. ELKElasticSearch5.1基础概念及配置文件详解【转】

    1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...

  6. linux下mysql数据库基础及客户端命令详解

    linux下mysql数据库基础及客户端命令详解 1.mysql数据库存储引擎: SHOW ENGINES;   #查看mysql支持的存储引擎 常见有如下两个存储引擎: MyISAM:每表三个文件: ...

  7. python装饰器详解-Python装饰器基础概念与用法详解

    本文实例讲述了Python装饰器基础概念与用法.分享给大家供大家参考,具体如下: 装饰器基础 前面快速介绍了装饰器的语法,在这里,我们将深入装饰器内部工作机制,更详细更系统地介绍装饰器的内容,并学习自 ...

  8. 英语词源基础之后缀-ion详解: -ion,-tion,-ction,-ption,-ation,-ition的区别

    英语词源基础之后缀-ion详解 来自古法语名词后缀-ion,表情况或状态,来自拉丁语名词后缀-io的宾格形式-ionem,表情况或状态,来自词干元音i+onem. 在拼写上,该后缀在英语中包括拼写形式 ...

  9. 学计算机基础word题,大学计算机基础word练习题及详解答案.doc

    大学计算机基础word练习题及详解答案 操作要求 1. 对正文进行排版,其中: (1)章名使用样式"标题1",并居中: 编号格式为:第X章,其中X为自动排序.(本小题1分) (2) ...

  10. 【C语言网】C语言基础题集训练详解(一)

    [C语言网]基础题集训练详解(一) 题目目录 [C语言网]基础题集训练详解(一) 前言 一.题目1000 [竞赛入门]简单的a+b 二. 题目1001 [编程入门]第一个HelloWorld程序 三. ...

最新文章

  1. 【Android NDK 开发】Android NDK 下载 ( 下载指定历史版本 NDK | Android NDK r10e - 2015 年 5 月 )
  2. pythongif字符动图,利用Python如何制作好玩的GIF动图详解
  3. python编程快速上手_给Python小白推荐的40本入门书籍,帮你快速上手
  4. 网络4/7层模型各层作用和协议对比
  5. python scikit learn 关闭开源_慕课|Python调用scikit-learn实现机器学习(一)
  6. 东北师范计算机研究生课表,东北师范大学全日制工程硕士(计算机技术)专业学位研究生实践教学管理办法...
  7. Vue.js 循环语句
  8. 流媒体服务器 NTV Media Server G3 电视回看功能赏析
  9. STM32工作笔记0092---CAN通信基础知识介绍-M3
  10. 用SIR模型处理新冠疫情
  11. 微软鼠标测试软件,微软sculpt鼠标评测 | 微软sculpt人体工学无线鼠标评测_什么值得买...
  12. Windows电脑桌面云便签自由拖动排序如何调整便签的顺序?
  13. 什么是Promise?Promise有什么好处
  14. 什么是台式机主板的“双通道”认知误区?
  15. 【SMAP 土壤水分的质量处理】
  16. 显著性检测综述(完整整理)
  17. java写入文件中文乱码问题_解决Java写入UTF-8文件中文乱码问题
  18. NCCL配置多卡运行
  19. python课程设计——单项选择标准化考试
  20. 看完,如果你不分享,是我的失败!--超好文章!

热门文章

  1. Velocity与JSP技术比较
  2. 教程:从FLASH过渡到SILVERLIGHT.(实例+源码)
  3. K3s初探:Rancher架构师带你尝鲜史上最轻量Kubernetes发行版
  4. 2.1 . df 命令和du命令
  5. (踩坑回忆录)Dva踩坑与解决方案
  6. java 生成二维码 QRCode、zxing 两种方式
  7. Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案...
  8. 一维数组对象转成二维数组
  9. Ubuntu系统给磁盘配额(Quota)
  10. 设计模式之监听器模式