nodejs expressjs http空服务器回复

时间:2015-01-05 05:45:23

标签: node.js http asynchronous express

我使用NodeJS和expressJS实现了以下后端http端点

app.get("/api/stocks/lookup/:qry", function(req, res) {
    getJson(lookupSearch(req.params.qry), function(json) {
        var quotes = [];
        und.forEach(json, function(d) {
            getJson(quoteSearch(d.Symbol), function(j) {
                quotes.push(j);
                if (json.length == quotes.length) {
                    res.send(quotes);
                }
            });
        });
    });
});

var getJson = function(search, cb) {
    http.request(search, function(response) {
        var raw = '';
        response.on('data', function(d) {
            raw += d;
        });
        response.on('end', function() {
            cb(JSON.parse(raw));
        });
        response.on('error', function(err) {
            console.error(err);
        });
    }).end();
};

我不明白为什么这只会有效,为什么有时候我会从curl收到此错误消息:curl: (52) Empty reply from server我的解决方案检查jsonquotes的长度似乎对我来说是正确的,所以我想我一定是误用了一些图书馆。但是,由于我是异步代码(getJson中的http请求)的新手,我不是100%确定这是正确的。

我在这里问了一个类似代码的问题:syntax and methods for placing callbacks in nodejs请注意,增加和减少计数的'自制'解决方案有时也有效。我也不想在节点内部使用JQuery。

  • 为什么上述http请求有时只能起作用?

0 个答案:

没有答案
相关问题