逐个显示信息

时间:2014-05-30 08:55:59

标签: javascript node.js synchronization ejs

我的node.js应用程序旨在扫描网站列表,在面板,statusCode和其他测试中返回。 现在应用程序的工作方式如下: 页面为空,直到加载结束,如果列表中的一个网站速度慢,则加载速度很慢,当100%的网站扫描面板显示时。

如何在加载页面时显示面板,并逐步显示其他信息?

var express     = require('express');
var fs          = require('fs');
var http        = require('http');
var ejs         = require('ejs');
var async       = require('async');
var request     = require('request');
var app         = express();
var mysql       = require('mysql');
var cheerio     = require('cheerio');

app.use(express.static(__dirname+"/public"));

// Database connection



app.get('/', function(req, res) {

    var connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'root',
        password : '',
        database : 'app'
    });

    connection.connect();

    var jsons = new Array();
    var odbc;
    connection.query('SELECT * from websites', function(err, rows) {
        if (err) throw err;

        async.each(rows, function(row, callback) {
            http.get(row.url, function(resp) {
                row.status = resp.statusCode;

                request(row.url, function(error, response, html){
                    if(!error){
                        var $ = cheerio.load(html);
                        str = $('*').text();
                        var errorODBC = str.indexOf("function.odbc-connect");
                        var errorTrans = str.indexOf(".WDD");

                        if(errorODBC != '-1'){
                            row.odbc = 'Erreur odbc';
                        }                       
                        if(errorTrans != '-1'){
                            row.aw = 'Erreur transfert';
                        }

                        jsons.push(row);
                        callback();
                    }
                });


            }).on('error', function(e) {
                console.log("Erreur : " + e.message);
            });

        },function(){
            res.render('index.ejs', {data : jsons});
            console.log("Scan done...");
        });
    }); 

    connection.end();
});

app.listen(8080);

0 个答案:

没有答案