Escolha o método assíncrono adequado para o processamento em lote para solicitações máximas / s
Preciso executar uma chamada cíclica para alguma API externa com algum atraso, para impedir a restrição de 'Limite de taxa de usuário excedido'.
A API de geocodificação do Google Maps é sensível a 'req / s', permitindo 10 req / s. Eu devo fazer geocodificação para centenas de meus contatos, e esse atraso é necessário. Portanto, preciso ter 10 funções de geocodificação assíncrona com pós-atraso em 1 segundo para cada uma. Portanto, coleciono todos os contatos na matriz e, em seguida, percorro a matriz de maneira assíncrona.
Geralmente, eu preciso ter um N threads simultâneos, com um atraso em D msecs no final de cada thread. O loop inteiro itera sobre uma matriz de entidades de Usuário. Cada encadeamento processa uma entidade única, como de costume.
Suponho que tenha um código como:
const N = 10; # threads count
const D = 1000; # delay after each execution
var processUser = function(user, callback){
someBusinessLogicProc(user, function(err) {
setTimeout(function() {
return callback(err);
}, D);
});
}
var async = require('async') ;
var people = new Array(900);
async.batchMethod(people, processUser, N, finalCallback);
Nesse pseudocódigobatchMethod
é um método que estou pedindo.