【发布时间】:2026-02-01 19:25:02
【问题描述】:
我想在我的服务器节点上启动异步 http 调用,我看到了 async 节点模块,我猜 async.parallel 使我们能够做到这一点。
文档中的示例非常清楚,但我不知道如何管理多个 http 调用。
我尝试了下面的示例,但它甚至没有启动 http 调用:
var http = require('http');
var Calls = [];
Calls.push(function(callback) {
// First call
http.get('http://127.0.0.1:3002/first' callback);
});
Calls.push(function(callback) {
// Second call
http.get('http://127.0.0.1:3002/second' callback);
});
var async = require('async');
async.parallel(Calls, function(err, results) {
console.log('async callback: '+JSON.stringify(results));
res.render('view', results);
});
如果我单独启动 http 请求,我确实有结果,但调用异步回调我得到async callback: [null,null]
【问题讨论】:
-
HTTP 请求在 node.js 中已经是异步的了。
-
是的,但我需要同时获得两个响应来呈现网页
-
你永远不会同时得到它们,因为 node.js 是单线程的,每个请求都是按顺序来的。你只需要等到第二个回调被调用。简单的回调计数会有所帮助。
-
是的,当调用第二个回调时,我可以通过启动与它们联系的新回调(或使用异步节点模块)同时获得这两个结果:-)
标签: node.js http node-async