Очередь обещаний / газ
у меня естьзапрос-обещание функция, которая делает запрос к API. Я ограничен в скорости этим API, и я получаю сообщение об ошибке:
Exceeded 2 calls per second for api client. Reduce request rates to resume uninterrupted service.
Я бегу паруPromise.each
циклы параллельно, что вызывает проблему, если я запускаю только один экземплярPromise.each
все работает нормально. В этихPromise.each
вызовы они приводят к одной и той же функции сзапрос-обещание вызов. Я хочу обернуть эту функцию с другойqueue
функция и установите интервал500
миллисекунды, так чтоrequest
не производится один за другим или параллельно, но устанавливается в это время в очереди. Дело в том, что мне все еще нужны эти обещания, чтобы получить их содержание, даже если для получения ответа требуется довольно много времени.
Есть ли что-нибудь, что сделает это для меня? Что-то, что я могу обернуть в функцию, и она будет отвечать через заданный интервал, а не параллельно или запускать функции одну за другой?
Обновить: Возможно, это должно быть конкретным обещанием, я пытался использовать функцию газа подчеркивания
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()
И все, что я получил, было так:
$ DEBUG=* node throttle.js
throttle request started +0ms
throttle request started +2ms
throttle request started +0ms