【发布时间】:2022-01-09 11:44:43
【问题描述】:
我有一组要查询的 API。例如var urls = ['example.org?x=1', 'example.org?x=2,3']如何让 ReactJS 在响应客户端之前等待所有响应(即 JSON)返回?
我已经尝试从Promises with http.get node.js 修改@Shanoor 的答案,但客户端的结果是空的 ("")。
var http = require('http');
var urls = ['example.org', 'example2.org', '...'];
var done = 0;
var result = [];
function callback(index, data) {
result[index] = data;
done++;
if (done == urls.length) {
result.forEach(console.log);
//I tried using the resp object here to return result[] but the data seemed corrupt
}
}
function processUrl(url, index) {
var finalData = '';
http.get(url, function(response) {
response.setEncoding('utf8');
response.on('data', function(data) {
finalData += data;
});
response.on('error', console.error);
response.on('end', function() {
callback(index, finalData);
})
});
}
app.get("/api/blah", (resp) => {
urls.forEach(processUrl);
//resp(result); this would result in an empty response
}
【问题讨论】:
标签: javascript node.js json express asynchronous