匹配响应请求node.js

时间:2012-12-14 19:28:45

标签: node.js

我在网络编程方面相对较新,所以这对某些人来说可能是显而易见的,但对我来说却不是。请求/响应对如何与异步请求匹配?在极端情况下,我可能有一个异步jQuery请求,它调用使用node.js的服务器,也是异步的。如果我进行了很多这类调用,那么看起来请求/响应会混淆。有哪些设施可以确保它们不会混淆?

1 个答案:

答案 0 :(得分:0)

请求及其响应不会混淆,因为您通常会在向服务器发起请求的函数中提供回调函数。 Node将两者结合在一起。

例如:

http.get("http://www.google.com/index.html", function(res) {
  console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});

http.get函数将向谷歌发起请求,节点将存储对您的回调函数的引用(函数(res){...})。

Node将继续执行当前函数(http.get之后的任何代码),直到它不再有任何代码要执行。

只要google开始发送回复并且节点没有执行任何其他操作,节点就会找到您的函数,相应的响应对象将被传递给它,准备好您使用它。

Node是单线程的,这意味着它一次不能做多于1件事。这就是为什么它在完成执行当前函数并且谷歌已经响应之前不会调用你的回调函数。

请点击此处了解详情:http://nodejs.org/api/http.html#http_class_http_clientrequest

PS:您不必提供回调函数。但是,如果不这样做,您永远不会知道请求是否成功。所以总是提供一个是好的做法。至少它应该记录任何错误。