如何在浏览器中显示回调响应



我想做这个简单的事情。请有人帮我解决这个问题。任何肯定的答案将不胜感激。我的简单问题是如何将最终数组打印到浏览器。我正在尝试将其显示给浏览器,但无法这样做。请在这方面帮助我。我是这个系统的新手。

var http = require('http');
var mysql = require('mysql'); 
http.createServer(function(req, res) {
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'DB_USER',
      password : 'DB_PASS',
      database : 'DB_NAME',
    });
    connection.connect();
    var resp = [];
    async.parallel([
      function(callback){
        setTimeout(function(){
          soap.createClient(url, function(err, client) {
              client.setSecurity(new WSSecurity('USER_NAME', 'PASSWORD'));
              client.SubmitMessage(strContent1, function(err, result) {
                  resp.push(result.message.payload.unit_of_business_results['premium_details']);
              });
          });
        }, 200);
      },
      function(callback){
          setTimeout(function(){
              soap.createClient(url, function(err, client) {
                client.setSecurity(new WSSecurity('USER_NAME', 'PASSWORD'));
                client.SubmitMessage(strContent2, function(err, result) {
                    resp.push(result.message.payload.unit_of_business_results['premium_details']);
                });
              });
          }, 100);
      },
      function(callback){
          setTimeout(function(){
              soap.createClient(url, function(err, client) {
                client.setSecurity(new WSSecurity('USER_NAME', 'PASSWORD'));
                client.SubmitMessage(strContent3, function(err, result) {
                    resp.push(result.message.payload.unit_of_business_results['premium_details']);
                });
              });
          }, 100);
      }
    ],
    // optional callback
    function(err, results){
        // the results array will equal ['one','two'] even though
        // the second function had a shorter timeout.
    });
    res.writeHead(200);
    res.end(JSON.stringify(resp));
}).listen(8020);

将响应的发送移动到productQuery.on('end')

文档:https://github.com/felixge/node-mysql/#streaming-query-rows

var http = require('http');
var mysql = require('mysql'); 
http.createServer(function(req, res) {
    var connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'DB_USER',
        password : 'DB_PASS',
        database : 'DB_NAME',
    });
    connection.connect();
    var prod = {};
    var productsFinished = false;
    var productQuery = connection.query('SELECT * FROM tbl_product 1') ;
    productQuery.on('result', function (prod_rows) {
        prod[prod_rows.product_id] = prod_rows;
    }); 
    var employer = {};
    var employerFinished = false;
    var employerQuery = connection.query('SELECT * FROM tbl_employer 1') ;
    employerQuery.on('result', function (empl_rows) {
        employer[empl_rows.employer_id] = empl_rows;
    }); 
    var sendIfFinished = function () {
        if(productsFinished && employerFinished) {
            res.writeHead(200);
            res.end(JSON.stringify(prod)); // or whatever you want to send.
        }
    }
    productQuery.on('end', function () {
        productsFinished = true;
        sendIfFinished();
    });
    employerQuery.on('end', function () {
        employerFinished = true;
        sendIfFinished();
    });

}).listen(8020);

最新更新