首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >节点JS -等待完全响应

节点JS -等待完全响应
EN

Stack Overflow用户
提问于 2015-08-21 09:37:22
回答 2查看 859关注 0票数 3

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

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

代码语言:javascript
运行
复制
http.get(url, function(response){
    // called right away instead of waiting until it finishes
});

我已经尝试过使用.end()和.close()事件--没有成功。如何让NodeJS等待?or...how :我让PHP通知节点“嘿,现在我完成了”。谢谢。

重要的一点是:当我尝试使用API时,它确实会等待完整的响应。

EN

回答 2

Stack Overflow用户

发布于 2015-08-21 10:12:43

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

代码语言:javascript
运行
复制
npm install request

紧接着是

代码语言:javascript
运行
复制
var request = require('request');
request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body)
  }
})
票数 1
EN

Stack Overflow用户

发布于 2015-08-21 12:21:29

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

来自PHP,您希望它能做以下事情:

代码语言:javascript
运行
复制
ExecuteThis();
ThenThis();
AndFinallyThis();

但NodeJS不会这样做。它将立即开始执行所有操作,然后返回结果。这类似于运行以下命令:

代码语言:javascript
运行
复制
php ExecuteThis.php && php ThenThis.php && php AndFinallyThis.php

您需要的是一个asynchronous waterfall、一个callback、一个Promise或类似的结构,再加上一个HTTP request

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32131050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档