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

本文通过实例介绍了如何使用async.mapLimit来控制并发请求,以避免网站限制。在尝试获取CNode社区首页40个主题的标题、链接和第一条评论时,该方法能有效管理并发操作。async库提供了一系列异步流程控制工具,包括集合、流程控制和工具类,使得在Node.js和浏览器环境中进行异步编程更为便捷。
摘要由CSDN通过智能技术生成

前言

上回参考《使用 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值