我使用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
我的解决方案检查json
和quotes
的长度似乎对我来说是正确的,所以我想我一定是误用了一些图书馆。但是,由于我是异步代码(getJson中的http请求)的新手,我不是100%确定这是正确的。
我在这里问了一个类似代码的问题:syntax and methods for placing callbacks in nodejs请注意,增加和减少计数的'自制'解决方案有时也有效。我也不想在节点内部使用JQuery。