Wählen Sie die richtige asynchrone Methode für die Stapelverarbeitung für maximale Anforderungen / Sek.

Ich muss einen zyklischen Aufruf an eine externe API mit einer gewissen Verzögerung durchführen, um zu verhindern, dass die Einschränkung "Benutzer-Ratenlimit überschritten" auftritt.

ie Geokodierungs-API von @Google Maps reagiert empfindlich auf Anforderungen / Sek., Sodass 10 Anforderungen / Sek. Zulässig sind. Ich sollte Hunderte meiner Kontakte geocodieren, und eine solche Verzögerung ist erforderlich. Ich benötige also 10 asynchrone Geocodierungsfunktionen mit einer Verzögerung von jeweils 1 Sekunde. Also sammle ich alle Kontakte im Array und durchlaufe das Array asynchron.

Im Allgemeinen muss ich N gleichzeitige Threads mit einer Verzögerung von D ms am Ende jedes Threads haben. Die gesamte Schleife durchläuft ein Array von Benutzerentitäten. Jeder Thread verarbeitet wie gewohnt eine einzelne Entität.

Ich nehme an, einen Code zu haben wie:

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);

In diesem PseudocodebatchMethod ist eine Methode, nach der ich frage.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage