Javascript node.js中如何使用json对象数组发送响应?

Javascript node.js中如何使用json对象数组发送响应?,javascript,json,node.js,module,pivotaltracker,Javascript,Json,Node.js,Module,Pivotaltracker,我想使用node.js的pivotal node模块返回完成的pivotal故事数组 app.get('/delivered_stories', function(request, response) { pivotal.useToken("my_token"); pivotal.getProjects(function (err, data) { var project_ids = data.project.map(function(x) { retu

我想使用node.js的
pivotal node
模块返回完成的pivotal故事数组

app.get('/delivered_stories', function(request, response) {             
  pivotal.useToken("my_token");
  pivotal.getProjects(function (err, data) {
    var project_ids = data.project.map(function(x) { return parseInt(x.id); });
    console.log('Retrived project ids: '.blue + project_ids);

    project_ids.forEach(function(id) {
      pivotal.getStories(id, { filter: "state:finished" }, function(err, story) {
        response.send(story);
      });
    });
    response.end(); // End the JSON array and response.
  });
});
我做错了什么?如何修复它?我得到一个错误:

http.js:708
    throw new Error('Can\'t set headers after they are sent.');
          ^
Error: Can't set headers after they are sent.
整个代码:

pivotal.getStories()是异步的

它的回调(因此
response.send()
)将在其余代码(包括
response.end()
)之后运行一段时间

事实上,您根本不应该调用
response.end()
response.send()
可以帮您完成这项工作

您也不能多次调用
response.send()
;您需要将所有结果合并到一个数组中并发送。

这不是一件简单的事;考虑使用Acyc.js或承诺。< /P>所以我如何存储<代码>项目> IDS >代码>并将其传递给GETScript?@ ReGeDeRek查看Asic库以协调异步任务。Oops刚刚看到答案提到了这一点——但仍然值得重申;)