npm-bluebird使用
注意
- 时刻注意
return; - 使用
Promise.promisify简化对test(val, function(err, result){})的处理; - 尽量避免使用
deferred object;
.spread
- 用于简化处理返回值是数组的情况;
- 用
es6取代其处理返回数组的时候注意添加.all();
.catch()
- 允许传入错误类型(
error constructor)来区别错误判断,包括:- TypeError,
- ReferenceError,
- EvalError,
- SyntaxError,
- RangeError,
- NetworkError,
- TimeoutError
- 也可以自己设置特别的错误类型,并且可以详细错误类型的信息;
- 可以传入一个返回布尔值的函数进行过滤;
- 传入一个对象简化判断;
.error
- 如果把错误分成
Operational errors和programmer errors,则可以用error方法来处理前者;这些错误包括:
* failed to connect to server
* failed to resolve hostname
* invalid user input
* request timeout
* server returned a 500 response
* socket hang-up
* system is out of memory
.finally
fulfilled状态后触发;并与之后的.then方法同时被触发;fulfilled状态触发后不会返回值到这个方法;同时其返回的方法也不会传递到下一个.then方法;
Promise.try
- 传入函数,没有错误则其返回值为
fulfilled状态,有错误则返回rejected状态的错误;
Promise.method
- 处理机制与
Promise.try类似,都传入函数;但其返回的是一个会返回promise对象的方法;
Promise.resolve
- 将传入的数据转化为
promise对象返回,除了原本是promise对象且是rejected状态的都会变成fulfilled状态;
Promise.reject
- 将传入的数据转化为
promise对象返回,状态都为rejected;
Promise.bind/.bind
- 传入一个值,给后续的链式操作中绑定一个
this为这个值;如果传入this,则绑定的是.bind()方法之前返回的值;
Collections
Promise.all
- 传入数组,当全部值为
fulfilled状态时以数组形式传递返回值; - 当有一个值状态为
rejected时将改值传递到错误处理;其他值不传递;
Promise.join
- 参数为一般参数加处理函数;处理函数相当于一个
.then方法;
Promise.join(val1, val2, val3, function (val1, val2, val3) {}).then...
- 处理机制与
Promise.all类似;
Promise.props
- 处理机制与
Promise.all类似,接受对象处理;
Promise.any
- 接受数组,会返回第一个达到
fulfilled状态的值;如果是空数组或都为rejected状态,则全部返回错误处理; - 注意实际的运行时间是包括全部值的判断的;
Promise.some
- 第一参数为接受数组,第二参数为判断的个数; 设置个数必须,且不能大于数字个数,可以为0;
- 处理机制与
Promise.all类似;返回最先到达设置个数的fulfilled状态的值; - 如果参数中
fulfilled状态的值达不到设定个数,返回rejected状态的值到错误处理函数;
Promise.map
- 第一参数为接受数组,第二参数为判断函数;
Promise.reduce, Promise.filter, Promise.each
- 同上
.map
- 第一参数为判断函数;第二参数为设置并发数:
{concurrency: Infinity};设置并行个数能加快处理但不能保证返回顺序; - 注意传递过来的必须是数组;
.reduce, .filter, .each
- 同上
Promise.mapSeries/.mapSeries
- 与
Promise.map类似;区别在于没有并发设置参数,如果其中一个为rejected状态,则之后的值便不再处理;
Promise.race
- 接受数组,返回第一个达到
fulfilled状态的值;
Resource management
Promise.using
- 接受多个参数,最后一个为处理前面参数的函数,在前面参数都为
fulfilled状态时才会处理;
Promisification
Promise.promisify
Promise.promisifyAll
npm-bluebird使用的更多相关文章
- Visual Studio Code使用typings拓展自动补全功能
转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.c ...
- Windows Nodejs 安装教程
Windows Nodejs 安装教程 1: 访问官方地址 https://nodejs.org/en/download/ 2: 解压压缩包文件到指定目录 我直接把压缩包解压到C盘根目录下,并将文件夹 ...
- Cnblog页面美化小记
Cnblog页面美化小记 这两天我在网上翻找了许许多多的资料,打开了不计其数的博客,对着\(js\).\(html\).\(css\)等文件删删改改,在浏览器和\(vscode\)间辗转腾挪...总算 ...
- vs Code编辑器智能提示功能
一.Node.Js的Typings工具可以用于Visual Studio Code的代码补全 1.vscode 的默认只有es原声api带有自动补全的功能,现在V1.9的版本默认已经支持NodeJS的 ...
- Butterfly侧边栏引入一言
此教程涉及修改源码 背景 在修改每页显示7篇文章后,出现了这种情况. 这是完美主义(强迫症)的我所不能忍受的,有什么可以占据这里的呢?{% btn 'https://hitokoto.cn/',一言, ...
- VS Code nodejs智能补全typings
安装typings node.js自动补全使用npm全局安装typings npm install -g typings -安装语法插件以安装node.js自动补全为例,在项目根目录下使用bash或者 ...
- npm 模块常用命令
mocha mocha --compilers js:babel/register : 在babel模式下测试,默认查找test文件夹,注意此时全局不要安装babel; ./node_modules/ ...
- Appium 命令行模式下遇到的问题总结及解决方案 npm ERR! tar.unpack unzip(或者untar) error
安装了GUI Appium后,卸载删除问题后,使用命令行模式安装. 一. 遇到问题: nalideMacBook-Pro:~ nali$ npm install -g appium npm ERR! ...
- bluebird的安装配置
安装 下载bluebird 3.5.0(开发) 意味着在开发中使用的未分类源文件.警告和长堆栈跟踪被启用,这会影响性能. <script src="//cdn.jsdelivr.net ...
- promise 进阶 —— async / await 结合 bluebird
一.背景 1.Node.js 异步控制 在之前写的 callback vs async.js vs promise vs async / await 里,我介绍了 ES6 的 promise 和 ES ...
随机推荐
- <<< html图片背景平铺
CSS背景图片平铺技巧 使用CSS来设置背景图片同传统的做法一样简单,但相对于传统控制方式,CSS提供了更多的可控选项,我们先来看看最基本的设置图片的方法.html代码: 代码如下: <divi ...
- js字符串方法
字符串方法根据下标返回字符:str.charAt()//传入一个下标返回字符str.charCodeAt();// 传入一个下标获取编码String.formCharCode();//接受编码,编码转 ...
- 网络基础知识之 Ping
========================================假定主机A的IP地址是192.168.1.1,主机B的IP地址是192.168.1.2,都在同一子网内,则当你在主机A上 ...
- 关于Java集合的小抄
在尽可能短的篇幅里,将所有List.Map.Set.Queue的特征与实现方式捋一遍.适合所有"精通Java"其实还不那么自信的人阅读. List ArrayList 以数组实现. ...
- .Net 中的反射(反射特性) - Part.3
反射特性(Attribute) 可能很多人还不了解特性,所以我们先了解一下什么是特性.想想看如果有一个消息系统,它存在这样一个方法,用来将一则短消息发送给某人: // title: 标题:author ...
- Google Maps API V3 之 路线服务
Google官方教程: Google 地图 API V3 使用入门 Google 地图 API V3 针对移动设备进行开发 Google 地图 API V3 之事件 Google 地图 API V3 ...
- 将C#文档注释生成.chm帮助文档
由于最近需要把以前的一个项目写一个文档,但一时又不知道写成怎样的,又恰好发现了可以生成chm的工具,于是乎我就研究了下,感觉还不错,所以也给大家分享下.好了,不多废话,下面就来实现一下吧. 生成前的准 ...
- 循环中的continue功能
在oracle存储过程中,有时我们希望在循环中为某种情况时不做任何处理,类似于c语言中的continue,跳过本次循环:在oracle 11g中好像增加了这个关键字,在之前版本中我们可以通过如下方式来 ...
- 墙裂推荐一本案例驱动的PhoneGap入门书,早看早收货
清华大学出版社推出的<构建跨平台APP:PhoneGap移动应用实战> 零门槛学APP开发 从无到有 循序渐进 20余个示例APP 3个项目APP 全平台à跨终端à移动开发 完美生命周期: ...
- centos 安装redis(一台机器可以安装多个redis)
我在运行时redis版本是2.8 操作前设置以管理员身份: 打开终端输入 su - 安装redis需要确保系统已经安装了(gcc gcc-c++)# yum -y install gcc gcc-c+ ...