NodeJS基础2---2 Promise详解
2019独角兽企业重金招聘Python工程师标准>>>
一、ES6的Promise语言标准、Promise/A+规范
1、Promise是Js针对异步场景的解决方案。
Promise是一个对象,同时是一种规范,针对异步操作约定统一接口,表示一个异步操作的最终结果,以同步方式写代码,执行的操作是异步的,保证程序的执行顺序是同步的。
2、Promise对象的三种状态
- 未完成(pending)
- 已完成(fulfilled)
- 失败(rejected)
三种状态变化只能由 未完成----失败 或 未完成----已完成
3、Promise/A+规范
PromiseA与A+不同点
- A+规范通过术语thenable 来去区分promise对象,当一个对象拥有 then()函数时,这对象就被认为是一个promise
- A+定义onFulfilled/onRejected必须作为函数来调用,而且调用过程必须是异步的,成功、失败返回promise的处理过程,必须作为函数来调用,并且处理过程是异步的。
- A+严格定义then方法链式调用时onFulfilled(成功)/onRejeced(失败)的调用顺序。
二、如何使用
通过promise对象的 then()方法把流程里面依次执行的异步操作,也就是回调函数,现在直接传递给Promise对象的then()方法。
Promise then方法
- then方法返回一个promise对象
- then方法接受两个·参数,成功时的回调函数,失败时的回调函数。
- 成功时的回调函数,参数为上一个promise的值
- 失败回调函数参数为失败原因
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详解相关推荐
- 【流媒体服务器Mediasoup】 NodeJs与C++信令通信详解及Linux下管道通信的详解(五)
目录 前言 匿名管道进程间通信 进程间管道 的创建与图解 MediaSoup中的管道创建 MediaSoup Channel的创建 NodeJs和 C++ 管道通信的过程 MediaSoup 消息确认 ...
- LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用
LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用. ...
- 【Java基础】HashMap原理详解
[Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...
- 电子元器件从入门到精通pdf_电子元件入门基础,常用电子元器件详解大全作用-涨知识必读...
1.电子元器件筛选的必要性 电子元器件的固有可靠性取决于产品的可靠性设计, 在产品的制造过程中, 由于人为因素或原材料. 工艺条件. 设备条件的波动, 最终的成品不可能全部达到预期的固有可靠性. 在每 ...
- ELKElasticSearch5.1基础概念及配置文件详解【转】
1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...
- linux下mysql数据库基础及客户端命令详解
linux下mysql数据库基础及客户端命令详解 1.mysql数据库存储引擎: SHOW ENGINES; #查看mysql支持的存储引擎 常见有如下两个存储引擎: MyISAM:每表三个文件: ...
- python装饰器详解-Python装饰器基础概念与用法详解
本文实例讲述了Python装饰器基础概念与用法.分享给大家供大家参考,具体如下: 装饰器基础 前面快速介绍了装饰器的语法,在这里,我们将深入装饰器内部工作机制,更详细更系统地介绍装饰器的内容,并学习自 ...
- 英语词源基础之后缀-ion详解: -ion,-tion,-ction,-ption,-ation,-ition的区别
英语词源基础之后缀-ion详解 来自古法语名词后缀-ion,表情况或状态,来自拉丁语名词后缀-io的宾格形式-ionem,表情况或状态,来自词干元音i+onem. 在拼写上,该后缀在英语中包括拼写形式 ...
- 学计算机基础word题,大学计算机基础word练习题及详解答案.doc
大学计算机基础word练习题及详解答案 操作要求 1. 对正文进行排版,其中: (1)章名使用样式"标题1",并居中: 编号格式为:第X章,其中X为自动排序.(本小题1分) (2) ...
- 【C语言网】C语言基础题集训练详解(一)
[C语言网]基础题集训练详解(一) 题目目录 [C语言网]基础题集训练详解(一) 前言 一.题目1000 [竞赛入门]简单的a+b 二. 题目1001 [编程入门]第一个HelloWorld程序 三. ...
最新文章
- 【Android NDK 开发】Android NDK 下载 ( 下载指定历史版本 NDK | Android NDK r10e - 2015 年 5 月 )
- pythongif字符动图,利用Python如何制作好玩的GIF动图详解
- python编程快速上手_给Python小白推荐的40本入门书籍,帮你快速上手
- 网络4/7层模型各层作用和协议对比
- python scikit learn 关闭开源_慕课|Python调用scikit-learn实现机器学习(一)
- 东北师范计算机研究生课表,东北师范大学全日制工程硕士(计算机技术)专业学位研究生实践教学管理办法...
- Vue.js 循环语句
- 流媒体服务器 NTV Media Server G3 电视回看功能赏析
- STM32工作笔记0092---CAN通信基础知识介绍-M3
- 用SIR模型处理新冠疫情
- 微软鼠标测试软件,微软sculpt鼠标评测 | 微软sculpt人体工学无线鼠标评测_什么值得买...
- Windows电脑桌面云便签自由拖动排序如何调整便签的顺序?
- 什么是Promise?Promise有什么好处
- 什么是台式机主板的“双通道”认知误区?
- 【SMAP 土壤水分的质量处理】
- 显著性检测综述(完整整理)
- java写入文件中文乱码问题_解决Java写入UTF-8文件中文乱码问题
- NCCL配置多卡运行
- python课程设计——单项选择标准化考试
- 看完,如果你不分享,是我的失败!--超好文章!
热门文章
- Velocity与JSP技术比较
- 教程:从FLASH过渡到SILVERLIGHT.(实例+源码)
- K3s初探:Rancher架构师带你尝鲜史上最轻量Kubernetes发行版
- 2.1 . df 命令和du命令
- (踩坑回忆录)Dva踩坑与解决方案
- java 生成二维码 QRCode、zxing 两种方式
- Mysql数据库按照varchar字符串类型排序和按照int整型类型排序的区别和注意点及解决方案...
- 一维数组对象转成二维数组
- Ubuntu系统给磁盘配额(Quota)
- 设计模式之监听器模式