所以我有一个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条答案
按热度按时间q3aa05251#
当使用原生http客户端时,你必须在解析数据之前手动添加块。出于这个原因,大多数人不使用原生http客户端。你想使用类似
request
模块的东西。其次是
icnyk63a2#
NodeJS以完全异步的方式工作。这意味着所有代码都是从上到下执行的,而不需要等待任何回调函数。
来自PHP,你希望它做:
但是NodeJS并没有这样做。它只是一次开始执行所有内容,然后返回结果。这就像运行这个命令:
您需要的是asynchronous waterfall、callback、Promise或类似的结构,再加上HTTP request。