Timed Versprechen Warteschlange / Gas

Ich habe ein Anfrage-Versprechen -Funktion, die eine Anforderung an eine API sendet. Ich bin durch diese API auf bestimmte Raten beschränkt und erhalte immer wieder die Fehlermeldung:

Exceeded 2 calls per second for api client. Reduce request rates to resume uninterrupted service.

Ich laufe ein paarPromise.each Schleifen parallel, was das Problem verursacht, wenn ich nur eine Instanz von @ ausfühPromise.each alles läuft gut. Innerhalb dieserPromise.each -Aufrufe führen zu derselben Funktion a mit einem Anfrage-Versprechen Anruf. Ich möchte diese Funktion mit einem anderen @ umschließqueue Funktion und stellen Sie das Intervall auf500 Millisekunden, so dass einrequest wird nicht nacheinander oder parallel erstellt, sondern auf diese Zeit in der Warteschlange gesetzt. Die Sache ist, ich brauche immer noch diese Versprechen, um ihre Inhalte zu erhalten, auch wenn es ziemlich lange dauert, bis eine Antwort kommt.

Gibt es irgendetwas, das das für mich tun wird? Etwas, in das ich eine Funktion einbinden kann und das in einem festgelegten Intervall und nicht parallel oder nacheinander abfeuert?

Aktualisieren Vielleicht muss es versprechensspezifisch sein, ich habe versucht, die Gasfunktion des Unterstrichs zu verwenden

var debug = require("debug")("throttle")
var _ = require("underscore")
var request = require("request-promise")

function requestSite(){
  debug("request started")
  function throttleRequest(){
    return request({
      "url": "https://www.google.com"
    }).then(function(response){
      debug("request finished")
    })
  }
  return _.throttle(throttleRequest, 100)
}

requestSite()
requestSite()
requestSite()

Und alles, was ich zurückbekam, war das:

$ DEBUG=* node throttle.js 
throttle request started +0ms
throttle request started +2ms
throttle request started +0ms

Antworten auf die Frage(2)

Ihre Antwort auf die Frage