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.

questionAnswers(1)

yourAnswerToTheQuestion