node.js максимум 1 неблокирующий запрос в секунду для геокодирования Nominatim - PullRequest
0 голосов
/ 12 октября 2018

У меня есть объект с несколькими точками GPS (широта и долгота), которые я хочу отправить один за другим в Nominatim, чтобы получить адрес точки GPS.Политика использования Nominatim разрешает только 1 запрос в секунду.С

for (let i = 0; i < message.data.gps.length; i++) { utility.addGPSLookup(message.data.gps[i]); }

Я передаю точки GPS моей функции, которая отправляет запрос в Nominatim, выполнив:

reverse(lat, lng, cb) {
        var url = "http://nominatim.openstreetmap.org/reverse?format=jsonv2";
                url += "&email=example@example.com";
        url = url.trim();
        url += "&lat=" + lat;
        url = url.trim();
        url += "&lon=" + lng;
        url = url.trim();

        request.get(
            {
                  url: url,
                  headers: {'User-Agent': "Logbook", Referer:
                             "http://www.google.de"}, 
                  timeout: 5000
            }, function(err, res, data) {
                  if (err) {
                       console.log("ERROR");
                       cb(err);
                  } else {
                       var json;
                       try {
                            json = JSON.parse(data);
                            cb(null, res, json);
                       } catch(e) {
                            cb(true);
                       } 
                  }
            }
        );    
}

Я уже пытался использоватьФункция setTimeout в разных местах, но мне не удалось.Как я могу убедиться, что отправляю только 1 запрос в секунду, не блокируя весь мой проект?

...