我将 async 和 request 模块结合起来,以异步方式和速率限制发出 api 请求。
这是我的代码
var requestApi = function(data){
request(data.url, function (error, response, body) {
console.log(body);
});
};
async.forEachLimit(data, 5, requestApi, function(err){
// do some error handling.
});
数据包含我向其发出请求的所有网址。使用 forEachLimit 方法将并发请求的数量限制为 5。此代码发出前 5 个请求,然后停止。在异步文档中,它说“迭代器传递了一个回调,一旦它完成就必须调用它”。但我不明白这一点,我应该怎么做才能表示请求已完成?
最佳答案
首先,您应该向迭代器函数添加回调:
var requestApi = function(data, next){
request(data.url, function (error, response, body) {
console.log(body);
next(error);
});
};
next();
或 next(null);
告诉 Async 所有处理完成。 next(error);
表示错误(如果 error
不是 null
)。处理完所有请求后,异步调用其回调函数
err == null
:async.forEachLimit(data, 5, requestApi, function(err){
// err contains the first error or null
if (err) throw err;
console.log('All requests processed!');
});
异步在收到第一个错误后或在 所有 请求成功完成后立即调用其回调 。
关于node.js - 使用 async 和 request 模块限制请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12589280/