我有125,000个身份证号码列表。
我正在向api发出请求以获取每个api的更多信息。
但我的问题是,如果我每秒请求超过6秒,api将停止给我回复。
我需要一种方法来控制请求的速度。
答案 0 :(得分:1)
只需使用setInterval调用的函数来进行实际的API查询吗?
简单示例:
var ids = [ /* big array here */ ];
function queryAllIds(ids, callback) {
var processedIds = [];
var lastProcessedId = 0;
var processedIdCount = 0;
var intervalId;
function queryApi() {
var idToProcess = lastProcessedId++;
doActualQuery(ids[idToProcess], function(result) {
processedIds[idToProcess] = result;
processedIdCount++;
if (processedIdCount === ids.length) {
nextTick(callback, processedIds);
}
});
}
if (intervalId && lastProcessedId === ids.length)
clearInterval(intervalId);
}
intervalId = setInterval(queryApi, 1000/6);
}
queryAllIds(ids, function (processedIds) {
// Do stuff here
});
答案 1 :(得分:0)
我们最终使用了速率限制器,它提供了开箱即用的速率限制。 https://www.npmjs.com/package/limiter