Я использую открытый API, который имеет квоту для максимального числа запросов в секунду (1 / se c).
Итак, я хочу иметь плавающую задержку перед выполнением следующего запроса , Я мог бы сделать фиксированный, но тогда это заняло бы больше времени для обработки (потому что после запроса он сохраняет данные в БД, что занимает х времени).
Я пытался написать что-то вроде этого :
'use strict'
const request = require('request-promise')
var last_request_time = 0
const makeRequest = (param1, param2, callback) => {
let current_request_time = Date.now()
setTimeout(() => {
last_request_time = current_request_time // doesn't change "last_request_time"
request({
uri: encodeURI(`/url/${param1}/${param2}`),
json: true
}).then(data => {
return callback('ok', data)
}).catch(error => {
return callback('error', error)
})
}, 1000 - (current_request_time - last_request_time))
}
module.exports = makeRequest
Но это не сработает без изменения last_request_time
непосредственно перед запросом API. Как заставить это работать?