Node JS -等待完整的响应


Node JS - wait for full response

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

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

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

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

有一点很重要:当我尝试CURL到API时,它会等待完整的响应。

使用本地http客户端时,您必须在解析数据之前手动添加块。由于这个原因,大多数人不使用本机http客户端。您想使用类似request模块的东西。

npm install request

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

NodeJS以完全异步的方式工作。这意味着所有的代码都被自上而下地执行,而不需要等待任何带有回调的函数。

来自PHP,你希望它做:

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

但是NodeJS不这样做。它会一次开始执行所有的东西然后返回结果。就像运行这个命令:

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

你想要的是一个异步瀑布,一个回调,一个承诺,或者类似的结构,再加上一个HTTP请求。