async.mapLimit 并发请求限制的一点实践

前言

上回参考《使用 eventproxy 控制并发》学习未能解决网站对并发请求进行限制的问题。这回继续学习《使用 async 控制并发》,目标是输出 CNode(https://cnodejs.org/ ) 社区首页的所有(40个)主题的标题,链接和第一条评论。

一个简单的callback实例

function add_callback(p1, p2 ,callback) {
   
    var my_number = p1 + p2;
    callback(my_number);
}
add_callback(5, 15, function(num){
   
    console.log("call " + num);
});
//call 20

add_callback函数的第三个参数是回调函数。当函数执行时,传递的结果作为callback的参数。

async.mapLimit

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

async异步流程控制模式包括,串行(series),并行(parallel),瀑布(waterfall)等。

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

  • 集合: Collections
  • 流程控制: Control Flow
  • 工具类: Utils

这次用到的是集合中的mapLimit(coll, limit, iteratee, callback opt)
每次以指定的最大limit数执行异步操作。参数如下:

名称 类型 描述
coll Array / Iterable / object 要迭代的集合。
limit number 一次异步操作的最大数量。
iteratee AsyncFunction 对于 coll 中的每一个item,迭代执行该异步函数。用(item, callback)调用,callback可选。
callback [ function ] 所有iteratee 函数完成后或发生错误时触发的回调函数。用(err, results)调用。results可以是iteratee
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值