На странице запрашиваю данные аjaxом, но так как request выполняется асинхронно, то скрипт не возвращает данные а продолжает работу и возвращает пустой json, чуть позже результат simpleParser.images выводит в консоль.
Как я могу получить данные от simpleParser.images и отправить json?
Как я могу подписаться на событие когда simpleParser.images выполнится?
Есть роутер:
exports.index = function(req, res){
if(req.param('name')) {
var simpleParser = require('../tools/simpleParser');
var result = simpleParser.images(req.param('name'));
// Как здесь получить результат и отправить json?
res.json(result);
}
res.render('goods');
};
Есть simpleParser.images :
module.exports = {
images: function (url) {
if (url) {
var request = require('request'),
cheerio = require('cheerio');
request({
uri: url,
method: 'GET',
encoding: 'binary'
}, function (err, res, body) {
var tmp = [];
body = new Buffer(body, 'binary');
var $ = cheerio.load(body);
$('.products-listing li a').each(function () {
var link = $(this).find('img').attr('src');
tmp.push(link);
});
console.log(tmp);
// Как результат tmp передать в роутер?
});
} else {
console.log('simpleParser: no url to parse');
return false;
}
}
};