注意

  • 时刻注意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 errorsprogrammer 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使用的更多相关文章

  1. Visual Studio Code使用typings拓展自动补全功能

    转自:http://blog.csdn.net/liyijun4114/article/details/51658087 参考来源: 官方介绍: https://code.visualstudio.c ...

  2. Windows Nodejs 安装教程

    Windows Nodejs 安装教程 1: 访问官方地址 https://nodejs.org/en/download/ 2: 解压压缩包文件到指定目录 我直接把压缩包解压到C盘根目录下,并将文件夹 ...

  3. Cnblog页面美化小记

    Cnblog页面美化小记 这两天我在网上翻找了许许多多的资料,打开了不计其数的博客,对着\(js\).\(html\).\(css\)等文件删删改改,在浏览器和\(vscode\)间辗转腾挪...总算 ...

  4. vs Code编辑器智能提示功能

    一.Node.Js的Typings工具可以用于Visual Studio Code的代码补全 1.vscode 的默认只有es原声api带有自动补全的功能,现在V1.9的版本默认已经支持NodeJS的 ...

  5. Butterfly侧边栏引入一言

    此教程涉及修改源码 背景 在修改每页显示7篇文章后,出现了这种情况. 这是完美主义(强迫症)的我所不能忍受的,有什么可以占据这里的呢?{% btn 'https://hitokoto.cn/',一言, ...

  6. VS Code nodejs智能补全typings

    安装typings node.js自动补全使用npm全局安装typings npm install -g typings -安装语法插件以安装node.js自动补全为例,在项目根目录下使用bash或者 ...

  7. npm 模块常用命令

    mocha mocha --compilers js:babel/register : 在babel模式下测试,默认查找test文件夹,注意此时全局不要安装babel; ./node_modules/ ...

  8. Appium 命令行模式下遇到的问题总结及解决方案 npm ERR! tar.unpack unzip(或者untar) error

    安装了GUI Appium后,卸载删除问题后,使用命令行模式安装. 一. 遇到问题: nalideMacBook-Pro:~ nali$ npm install -g appium npm ERR! ...

  9. bluebird的安装配置

    安装 下载bluebird 3.5.0(开发) 意味着在开发中使用的未分类源文件.警告和长堆栈跟踪被启用,这会影响性能. <script src="//cdn.jsdelivr.net ...

  10. promise 进阶 —— async / await 结合 bluebird

    一.背景 1.Node.js 异步控制 在之前写的 callback vs async.js vs promise vs async / await 里,我介绍了 ES6 的 promise 和 ES ...

随机推荐

  1. Alpha阶段第八次Scrum Meeting

    情况简述 Alpha阶段第八次Scrum Meeting 敏捷开发起始时间 2016/10/31 00:00 敏捷开发终止时间 2016/10/32 00:00 会议基本内容摘要 跟助教进行了交流,明 ...

  2. HTML5 开发框架

    WeUI WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一.包含button.cell.dialog. progress ...

  3. 11月14日用AJAX、PHP、SESSION做购物车

    购物车网页代码 1.登录界面login.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  4. centos7删除自带openjdk

    一些开发版的centos会自带jdk,我们一般用自己的jdk,把自带的删除.先看看有没有安装java -version [root@java-test-01 ~]# java -version ope ...

  5. sql中的!=判断的注意事项

    sql查询中where过滤条件为某字段 colName='xx'时一般不会出什么问题, 但如果想达到不为xx的时候就要注意了,用colName!= 'xx'可能就有问题了,因为该字段可能为空,为nul ...

  6. TypePerf.exe使用命令查找计数器

    TypePerf.exe是一个命令行工具,包括把Windows操作系统的性能计数器数据输出到命令窗口或写入到支持该功能的日志文件格式中. 通过以下两个参数获取计数器信息: -q [object] 列出 ...

  7. LOL 控制技能的解释

    压制:硬控的一种,是指A在释放压制型技能的时候B无法进行任何动作,可以被 水银腰带 和 坩埚盖 解除(原来可以完全解掉,现在貌似只是能动,伤害还在继续,比如蚱蜢的R中,用水银解掉之后可以立即跑开,但是 ...

  8. Github.com的Git和TortoiseGit图文教程

    图文介绍Windows系统下使用 Github账户 + msysgit + TortoiseGit 进行文件管理的方法. 安装 安装mysysgit 下载地址:msysgit 安装过程: 0.启动 1 ...

  9. 【荐】怎么用PHP发送HTTP请求(POST请求、GET请求)?

    file_get_contents版本: <?php /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data pos ...

  10. html嵌入样式表

    1.针对文件中的字体还有属性进行设置主要设置文字的大小及其颜色问题,未涉及div飘操作 处理页面CSS 先检测该内容部分是否已经设定了样式,如果没有单独设定再按照总体设计进行限定. eg:  h1 h ...