Node JS - 等待完整响应

时间:2015-08-21 01:37:22

标签: php node.js nginx

所以我有一个API(用Nginx编写的PHP)。 我使用Node JS来向该API发送请求。 有时需要5-7秒,直到API完成它需要做的事情。

问题是Node JS不会等待完整的响应到达。

http.get(url, function(response){
    // called right away instead of waiting until it finishes
});

我已经尝试过使用.end()& .close()事件 - 没有运气。 如何让NodeJS等待?或者......如何让PHP通知节点“嘿,现在我已经完成了”。 感谢。

一件重要的事情:当我尝试使用CURL到API时,它会等待完整的响应。

2 个答案:

答案 0 :(得分:1)

使用本机http客户端时,您必须在解析数据之前手动附加块。因此,大多数人不使用本机http客户端。您想使用request模块之类的东西。

npm install request

其次是

var request = require('request');
request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body)
  }
})

答案 1 :(得分:1)

NodeJS以完全异步的方式工作。这意味着所有代码都是从上到下执行的,无需等待任何带回调的函数。

来自PHP,您希望它能够做到:

ExecuteThis();
ThenThis();
AndFinallyThis();

但NodeJS并不这样做。它会立即开始执行所有内容然后返回结果。这就像运行此命令一样:

php ExecuteThis.php && php ThenThis.php && php AndFinallyThis.php

您想要的是asynchronous waterfallcallbackPromise或此类结构,以及HTTP request