浅谈bluebird包的使用理解

bluebird是一个第三方Promise类库,相比其它第三方类库或标准对象来说,功能更齐全而不臃肿、浏览器兼容性更好。

我们可通过npm命令来安装:npm install bluebird

通过require获取对模块的引用:cnst Promise = require('bluebird');

我们可以看到官方的api使用说明

但我们在项目中常会使用的方法有一下几部分

1: .all.props

2: .map.each.mapSeries

3: .filter.reduce

4: .any.some.race

我们可以分为这几部分来说明

第一部分 .all,  .props

通过上面的图可以总结相同点不不同点和使用场景

相同点:

  1. 两个都是执行多个Promise
  2. 返回给res的值是所有promise的结果
  3. 都是并行处理的和执行顺序没有关系

不同点:

  1. 参数 iterator 不同, .all 是一個 Array 而 .props 是 Object
  2. 主要差别結果 res 格式不同,.all 是会产生Array [],而 .props 产生 Object {}

使用场景

  1. 只想要快完成 Promise 操作,不需要的对返回结果有处理,使用 .all 写法会简单很多
  2. .all .props都是并行处理 多个 Promise function,所以仍要注意,如果一次处理太多的 Promise function ,会有过高的 system load 问题

 

第二部分.each.map.mapSeries

相同点:

  1. 传入的 items都是array[]
  2. 处理成功后返回结果也是array[]
  3. 执行完所有的items后才会返回结果

不同点:

  1.  .each和 .mapSeries 相似,都会按照顺序执行
  2. .map 和 .mapSeries 执行后的结果可以返回新的的结果  而 .each 产生的结果只是原来的数据集不可以随意改变结构
  3. .map 可以多加一個 concurrency 参数,可以一次指定并行处理多少个

使用场景

  1. 除非在特定情況,必须要使用給定的值 否則都不建议使用 .each
  2. 如果要增加執行速度,建议使用 .map ,但是为了系统未定型,建议使用 concurrency 参数
  3. 如果确定要执行的顺序的话使用.mapSeries 

第三部分.filter.reduce

.filter   可以等待多个 Promise 的完成,并对结果进行过滤。它实际上的效果相当于在 Promise.map 之后使用 Array 的 filter 方法来进行过滤

.reduce   把多个 Promise 的结果缩减成单个值。其作用类似 Array 的 reduce 方法,但是可以处理 Promise 对象

 

第三部分.any.some.race

.any  相当于使用 Promise.some 并把数量设为1,不过 Promise.any 的结果不是一个长度为1的数组,还是具体的单个值

.some 如果只需要等待其中部分 Promise 完成,可以使用 Promise.some 并指定完成的 Promise 数量。在代码清单10中,只需要等待2个文件读取操作完成即可。

.race  race方法返回一个promise,只要传入的诸多promise中的某一个完成或被拒绝,则该promise同样完成或被拒绝,最终值或拒绝原因也与之相同

 

如果写的对你有一点点帮助的话,就随便帮下小明同学 感谢大伙 !!!

一、 左下角点个赞再走吧,给博主一点关怀,可以让更多人看到

二、可以关注我的微信公众号「一起学Node」基于前后端NodeJs相关技术栈分享 交流 学习

 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值