我怎样才能发送多个XMLHttpRequests

我有一个关于节点js和expression框架的问题。

我想在我的服务器代码中执行以下操作:

  • 用xmlhttprequest调用远程服务器1
  • 处理响应
  • 使用xmlhttprequest 2调用远程服务器

这是我的服务器代码的简化版本:

app.js:

var express = require('express'); var routes = require('./routes'); var about = require('./routes/about'); var user = require('./routes/user'); var contact = require('./routes/contact') var http = require('http'); var path = require('path'); var cors = require('cors'); var app = express(); .... app.get('/', routes.index); //<---currently this is handled in index.js, in function index. 

index.js:

 exports.index = function(req, res){ //xmlhttprequest 1 // <--- send xhr 1 //process data //xmlhttprequest 2 // <--- send xhr 2 }; 

Cant send headers after they are sent收到Cant send headers after they are sent的消息。 我阅读了快速文档,发现在发送请求之后尝试修改标题时会发生这种情况。 我还读了一些有关中间件和路由的内容。 但是这个文档对我来说不是很清楚。

有人能指出什么是理想的做法吗? 我可以使用具有相关信息的链接。 我是新来expression和节点js。

编辑:更多细节:

  • 该用户位于我的网站foo /的着陆页上。

  • 他input一些细节,根据这个细节我做了第一个xmlhttprequest。

  • 我处理来自API 1的数据,使用已处理的数据作为API 2的input,这又是一个xmlhttprequest。

如果你想发送两个不同的XHR请求,你需要为它定义两个不同的路由:

 app.get('/XHR1', routes.xhr1); app.get('/XHR2', routes.xhr2); 

你得到的原因Can't send headers after they are sent是因为你正在响应客户端(可能是通过res.send(200) , 完整列表等 ),然后尝试再次响应客户端。 每次通话只能回复一次。