Прежде всего, спасибо за ваше время здесь.
Я использую node.js для программных вызовов API.У меня есть массив, заполненный числами, и я хотел бы перебрать его для отправки запросов API, чтобы проверить, является ли число допустимым.Проблема заключается в том, что мне нужно управлять пропускной способностью моих запросов API, чтобы избежать HTTP 429 (из-за ограничений поставщика API).Я также поддерживаю HTTP-соединение для ускорения запросов.
Я использую внешний ограничитель запросов https://www.npmjs.com/package/limiter.
. Для простоты я включу проверку числа в качестве зависимости, которая нене существует, но это чтобы не усложнять ситуацию.
Мой код следующий:
var RateLimiter = require('limiter').RateLimiter;
var http = require('http');
var Checknumber = require('numbercheck')
var agent = new http.Agent({
keepAlive: true,
maxSockets: 1,
keepAliveMsecs: 3000
})
//final is the array containing 100 phone numbers
var final = [xxxxxxxx, xxxxx, .......,];
//This limit the API requests to 1 per second
var limiter = new RateLimiter(1, 'second');
for (x=0; x<final.length; x++){
limiter.removeTokens(1, function() {
console.log(final[x], x);
//This console.log is to debug
Checknumber.get({ number: final[x]}, (error, response) => {
if (error) {
console.error(error)
}
else {
console.log(response)
}
}
)}
)}
В результате я получаю final[x] is undefined
, и поэтому запросы API не выполняются
console.log(final[x], x)
возвращает: undefined 100
Кажется, что почему-то я не могу получить доступ к final[x]
по индексу.
Не могли бы вы помочь здесь?
С уважением
Я также пытался передать final[x]
в limiter.removeTokens(1, function(final[x]) {...
, но получаю
SyntaxError: Неожиданный токен [