У меня есть код ниже и я пытаюсь получить доступ к массиву all_records после того, как _.each функция завершена. Однако, поскольку это асинхронно, мне было интересно, удалось ли заставить обратный вызов на символы подчеркивания каждый?Работа с асинхронными функциями. Пользовательский обратный вызов?
var request = require('request'),
cheerio = require('cheerio'),
_ = require('underscore');
var all_records = [];
_.each([0,100], function(start) {
var base_url = "http://www.example.com/search?limit=100&q=foobar&start=";
var url = base_url + start;
request(url, function(err, res, body) {
var $ = cheerio.load(body),
links = $('#results .row');
$(links).each(function(i, link) {
var $link = $(link);
var record = {
title: $link.children('.title').text().trim()
};
all_records.push(record);
});
});
});
// Need to run this once _.each has completed final iteration.
console.log(all_records);
async был способом пойти, но я закончил использовать async.forEach в конце. – fatnic
Отлично, если это решение решило вашу проблему, подумайте о принятии этого ответа. Кроме того, я думаю, вы имели в виду async.each, а не foreach. –
Да, это согласно документам. Хотя forEach работает также. – fatnic