php Node JS -等待完整响应

9rnv2umw  于 2023-04-19  发布在  PHP
关注(0)|答案(2)|浏览(100)

所以我有一个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时,它会等待完整的响应。

q3aa0525

q3aa05251#

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

npm install request

其次是

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

icnyk63a2#

NodeJS以完全异步的方式工作。这意味着所有代码都是从上到下执行的,而不需要等待任何回调函数。
来自PHP,你希望它做:

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

但是NodeJS并没有这样做。它只是一次开始执行所有内容,然后返回结果。这就像运行这个命令:

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

您需要的是asynchronous waterfallcallbackPromise或类似的结构,再加上HTTP request

相关问题