无法从响应的结束事件中对 Http.Request 进行递归调用
Can't make recursive call to Http.Request from within end event of Response
我想发出一个HTTP GET请求,然后在最后一个请求完成后立即触发另一个请求。每个请求都接近相同(路径的小更改)。
我无法理解为什么以下内容不起作用(简化版本):
var options = { ... } // host, port etc
var req = request(options, function(res) {
res.on('data', function(chunk) {
data+=chunk;
});
res.on('end', function() {
db.insert(data);
options.path = somewhat_new_path;
req.end(); // doesn't do anything
});
});
req.end();
我知道有很多库等用于对异步代码进行排序,但我真的很想了解为什么我不能以这种方式实现异步循环。
>req.end()
完成请求。在您完成请求之前,响应不会开始出现。因此,res.on('end',function(){})
内部的req.end()
没有任何意义。
如果你想用其他路径发出另一个请求,你可以做如下的事情:
var http = require('http');
var options = { ... } // host, port etc
makeRequest(options, function() {
db.insert(data);
options.path = somewhat_new_path;
makeRequest(options, function() { //this will make a recursive synchronous call
db.insert(data);
});
});
options.path = another_path;
makeRequest(options, function() { //this will make a asynchronous call
db.insert(data);
});
var makeRequest = function(options, callback) {
http.request(options, function(res) {
res.on('data', function(chunk) {
data+=chunk;
});
res.on('end', callback);
}).end();
}
相关文章:
- 在http服务单元测试中使用request-js时,chai.request不是一个函数
- Angular Cross Origin Request CORS失败,但节点http.get()成功返回
- 在 http 请求中添加事件侦听器 ( request.on ) 是什么意思?而笏就是它的用途
- Angular JS $http request?
- JavaScript 中的 http request in while 循环
- Angular Js Curl -d http request
- Angular 2:HTTP Post Request,带有URL参数和正文类型参数
- HTTP GET request with JQuery
- 如何使用 javascript for http request 使用 .com url.
- 无法从响应的结束事件中对 Http.Request 进行递归调用
- 如何在 NodeJS 中传递响应参数,包括来自 POST http.request 的正文
- 如何限制在 http-on-modify-request 之后触发的 JavaScript 函数的执行每分钟一定次数
- 如何从节点中获取数据.js http get request
- AngularJs:在另一个$http.get request中$http.get request
- RxJS + Node.js Http Request
- 使用 http.request 会生成错误
- XML HTTP GET Request Fails
- 无法使用 node.js http.request - MapperParsingException[未能解析]将记录插
- Javascript Http Get Request error : NS_ERROR_FAILURE
- HTTP post request - AngularJS 和 JQuery 之间的区别