使用快递提交其他网站的各方

时间:2015-08-03 23:11:11

标签: node.js express pug

我有一个基本的Express应用程序,其中一个函数使用nodejs请求,并使用选择器获取一些div。在那之后,我想用玉石渲染这个。

var express = require('express');
var voc = require('vocabulaire');
var async = require('async');

var router = express.Router();

router.get('/', function (req, res) {
    res.render('index', {title: 'Espace de la diffusion'});
});

var result;
router.get('/search/:mot', function (req, res) {
    async.series([
        function () {
            result = main(['conj', req.params.mot]);
            console.log('in 1');
        },
        function () {

            res.render('index', {title: 'Espace de la diffusion', data: result});
            res.send(html);
            console.log('in 2');
        },
    ]);    
});    

module.exports = router;


var request = require('request')
    , cheerio = require('cheerio');

function doit(verbe, result) {
    var url = 'http://www.babla.ru/%D1%81%D0%BF%D1%80%D1%8F%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/%D1%84%D1%80%D0%B0%D0%BD%D1%86%D1%83%D0%B7%D1%81%D0%BA%D0%B8%D0%B9/' + verbe;

    request(url, function (err, resp, body) {
        $ = cheerio.load(body);
        var temps = $('.span4.result-left h5');
        if (temps.length == 0) {
            console.log('results not found');
        }
        else {
            console.log('result found');
            debugger;
            return $('.span4.result-left');
        }
    });
}


function main(arg) {
    switch (arg[0]) {
        case 'conj':
            return doit(arg[1]);
            break;
        default:
            console.log('unknown parameter');
            break;
    }
}

我使用异步库来确保我的结果已准备好呈现,但在控制台中我看到下一步:

GET / search / est - - ms - -
在1 结果发现

和调试器跟着我到nodejs函数makeTick().. 我不知道该怎么办..请帮帮我。

1 个答案:

答案 0 :(得分:1)

您的async.series()函数缺少您需要调用的callback参数,以便执行下一个函数。但是,您实际上不需要async来执行单个异步任务:

main(['conj', req.params.mot], function(err, result) {
  res.render('index', {title: 'Espace de la diffusion', err: err, data: result});
});

// ...

function doit(verbe, result, callback) {
    var url = 'http://www.babla.ru/%D1%81%D0%BF%D1%80%D1%8F%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F/%D1%84%D1%80%D0%B0%D0%BD%D1%86%D1%83%D0%B7%D1%81%D0%BA%D0%B8%D0%B9/' + verbe;

    request(url, function (err, resp, body) {
        if (err)
          return callback && callback(err);

        $ = cheerio.load(body);
        var temps = $('.span4.result-left h5');
        if (temps.length == 0) {
            callback && callback();
        }
        else {
            callback && callback(null, $('.span4.result-left'));
        }
    });
}


function main(arg, callback) {
    switch (arg[0]) {
        case 'conj':
            doit(arg[1], callback);
            break;
        default:
            callback && callback(new Error('unknown parameter'));
            break;
    }
}