Показать сообщение отдельно
  #1 (permalink)  
Старый 04.08.2013, 13:23
Новичок на форуме
Отправить личное сообщение для devataatman Посмотреть профиль Найти все сообщения от devataatman
 
Регистрация: 13.11.2012
Сообщений: 4

Получить ajax данные от асинхронной функции
На странице запрашиваю данные а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;
        }
    }
};
Ответить с цитированием