node的async流程控制包parallel的实现

本文介绍了Node.js中的Async库,用于处理异步流程控制,特别是并行(parallel)函数的使用。通过示例展示了如何使用parallel执行多个异步任务并在所有任务完成后调用回调。并探讨了其内部实现原理,强调了Async库在解决回调地狱问题上的作用,提高代码可读性和可维护性。
摘要由CSDN通过智能技术生成

Async介绍

 

Async是一个流程控制工具包,提供了直接而强大的异步功能。基于Javascript为Node.js设计,同时也可以直接在浏览器中使用。

 

Async提供了大约20个函数,包括常用的map, reduce, filter, forEach 等,异步流程控制模式包括,串行(series),并行(parallel),瀑布(waterfall)等。

 

项目地址:https://github.com/caolan/async

 

Async函数介绍

 

基于async的0.2.9版本。

 

async主要实现了三个部分的流程控制功能:

 

集合: Collections

流程控制: Control Flow

工具类: Utils

1). 集合: Collections

 

each: 如果想对同一个集合中的所有元素都执行同一个异步操作。

map: 对集合中的每一个元素,执行某个异步操作,得到结果。所有的结果将汇总到最终的callback里。与each的区别是,each只关心操作不管最后的值,而map关心的最后产生的值。

filter: 使用异步操作对集合中的元素进行筛选, 需要注意的是,iterator的callback只有一个参数,只能接收true或false。

reject: reject跟filter正好相反,当测试为true时则抛弃

reduce: 可以让我们给定一个初始值,用它与集合中的每一个元素做运算,最后得到一个值。reduce从左向右来遍历元素,如果想从右向左,可使用reduceRight。

detect: 用于取得集合中满足条件的第一个元素。

sortBy: 对集合内的元素进行排序,依据每个元素进行某异步操作后产生的值,从小到大排序。

some: 当集合中是否有至少一个元素满足条件时,最终callback得到的值为true,否则为false.

every: 如果集合里每一个元素都满足条件,则传给最终回调的result为true,否则为false

concat: 将多个异步操作的结果合并为一个数组。

2). 流程控制: Control Flow

 

series: 串行执行,一个函数数组中的每个函数,每一个函数执行完成之后才能执行下一个函数。

parallel: 并行执行多个函数,每个函数都是立即执行,不需要等待其它函数先执行。传给最终callback的数组中的数据按照tasks中声明的顺序,而不是执行完成的顺序。

whilst: 相当于while,但其中的异步调用将在完成后才会进行下一次循环。

doWhilst: 相当于do…while,doWhilst交换了fn,test的参数位置,先执行一次循环,再做test判断。

until: until与whilst正好相反,当test为false时循环,与true时跳出。其它特性一致。

doUntil: doUntil与doWhilst正好相反,当test为false时循环,与true时跳出。其它特性一致。

forever: 无论条件循环执行,如果不出错,callback永远不被执行。

waterfall: 按顺序依次执行一组函数。每个函数产生的值,都将传给下一个。

compose: 创建一个包括一组异步函数的函数集合,每个函数会

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值