Я настраиваю парсер с помощью NodeJS, и мне трудно понять, как правильно передавать данные при использовании async.parallel.
Вот пакетная функция, которая получает список почтовых индексов в массиве внутри объекта zip_results. Я пытаюсь настроить массив asyncTasks как массив функций, которые будут запускаться асинхронно. Функция, которую я хочу вызвать для каждого почтового индекса, называется Scraper.batchOne, и я хочу передать ей почтовый индекс и версию задания. Прямо сейчас функция вызывается немедленно. Я попытался обернуть вызов Scraper.batchOne
в анонимную функцию, но это потеряло область действия индексной переменной i
и всегда отправляло неопределенные значения.
Как сделать так, чтобы функция передавалась в массив вместе с некоторыми параметрами?
// zip_results: {job_version: int, zip_codes: []}
Scraper.batch = function (zip_results) {
//tasks - An array or object containing functions to run, each function
//is passed a callback(err, result) it must call on completion with an
//error err (which can be null) and an optional result value.
var asyncTasks = [], job_version = zip_results.job_version;
for (var i=0; i < zip_results['zip_codes'].length; i++) {
asyncTasks.push(Scraper.batchOne(zip_results['zip_codes'][i], job_version));
}
// Call async to run these tasks in parallel, with a max of 2 at a time
async.parallelLimit(asyncTasks, 2, function(err, data) { console.log(data); });
};