2015-07-24 2 views
1

Я пишу простое приложение, которое извлекает некоторые данные геокодирования из API геокодирования Google Maps. Я пытаюсь получить эти данные для массива адресов (в строках), используя узел-геокодер (this package) внутри async.each() (от this package) функции:Функция маршрута узла ничего не делает

async.each(entries, function(entry, callback) { 

    geocoder.geocode(entry.address, function(err, res) { 
     resultCheck.push(res); 
     var point = { 
      address: entry.address, 
      coordinates: { 
        latitude: res.latitude, 
        longtitude: res.longtitude 
      } 
     }; 
     pointSet.points.push(point); 
     callback(); 
    }, function(err) { 
     if(err) { errorArray.push(err); } 
    }); 
}); 

Тесты показывают, что функция асинхронной обрабатывает каждый элемент массива, но функция геокодирования ничего не делает (resultCheck и errorArray передаются в ответ на запросы).

Будучи почти полным номером JavaScript, я также хотел бы спросить - этот подход подходит близко к правилу?

Любые идеи были бы приветствованы, спасибо заранее.

EDIT: Кажется, что функция async не ждет ответа GM API, чтобы работать над этим, опубликует, если я это преодолею.

ответ

0

Я вижу некоторые проблемы в коде, при следующих предположениях

  1. вы используете google maps api v3
  2. и использовать этот async модуль

код должен быть что-то вроде этого, обратите внимание на подпись как geocode, так и async.each

async.each(entries, function (entry, callback) { 
    geocoder.geocode(entry.address, function (result, status) { 
     resultCheck.push(result); 
     var point = { 
      address: entry.address, 
      coordinates: { 
       latitude: result.latitude, 
       longtitude: result.longtitude 
      } 
     }; 
     pointSet.points.push(point); 
     callback(); 
    }); 
}, function (err) { 
    if (err) { 
     errorArray.push(err); 
    } 
}); 
+0

Благодарим за отзыв, но обновленное приложение работает точно так же - оба результата Check и errorArray заканчиваются пустым. Что касается ваших предположений - вы были верны асинхронному пакету, и что касается GM API, я не использую JavaScript API, я пытаюсь подключиться к (HTTP) (HTTP one) (https: // developers. google.com/maps/documentation/geocoding/intro) через пакет npm node-geocoder. Я обновил свой вопрос. –

Смежные вопросы