Node.JS发出多个POST请求,直到响应为空
我正在向API发出一个POST请求,该请求的响应字符数有限。为了得到完整的响应,我需要发出多个POST请求,然后将它们全部附加到一个文件中。我不太熟悉异步编程,所以我想不出解决问题的方法。以下是我的代码片段:Node.JS发出多个POST请求,直到响应为空,node.js,asynchronous,post,Node.js,Asynchronous,Post,我正在向API发出一个POST请求,该请求的响应字符数有限。为了得到完整的响应,我需要发出多个POST请求,然后将它们全部附加到一个文件中。我不太熟悉异步编程,所以我想不出解决问题的方法。以下是我的代码片段: var request = require('request'); var fs = require('fs'); var options = {//options for POST request body}; request(options, function (error, re
var request = require('request');
var fs = require('fs');
var options = {//options for POST request body};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
fs.appendFileSync("./response.json", JSON.stringify(body), 'utf8');
var resp = JSON.parse(fs.readFileSync('./response.json', 'utf8'));
options.offset = resp.parameters.length; //this is length of my data so far, next request will have this number in it and response will be new data offseted by this number
}
});
在这个请求之后,我需要再做一个,直到
body.length
为零。所以我想我需要的是从它自己的回调调用请求函数。我如何做到这一点?谢谢 正如JM-AGMS所说,将请求函数调用封装在另一个函数中,以使一个请求的回调触发下一个请求
递归解决方案看起来有点像这样:
var request = require('request');
var fs = require('fs');
var options = {/*options for POST request body*/};
function loop(options) {
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
if (body.length !== 0) {
fs.appendFileSync("./response.json", JSON.stringify(body), 'utf8');
var resp = JSON.parse(fs.readFileSync('./response.json', 'utf8'));
loop({ ...options, offset: resp.parameters.length });
}
}
});
}
您将整个请求放在另一个函数中。然后再次调用该函数。在重试之前,您必须使用回调来完成请求。