NodeJSサーバーにAPI呼び出しを送信しようとしています。残念ながら、サーバー(私によって作られたものではない)は私に非同期呼び出しをさせません。前のリクエストが完了するまでリクエストを待つ方法はありますか?
私は前回のリクエストが完了するのを待ってから送信する方法を見つけようとしています。ここで
は私のコードです:
var http = require('http');
var fs = require('fs');
// An object of options to indicate where to post to
var post_options = {
host: 'localhost',
port: '8080',
path: '/api/scan',
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
};
var array = ["ssl.com", "google.com", "hamzakhan.org"];
for (var i=0; i<array.length;i++) {
//console.log(array[i]);
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
body = JSON.parse(body);
// Make sure it's working
console.log(body.response.subject);
});
});
var url = array[i];
var catURL = { "url": url, "path": "/", "port": "443", "live_scan": "false", "advanced": "true" };
post_req.write(JSON.stringify(catURL), function(err) {
//console.log(err);
post_req.end();
});
}
私は、forループの内部ループしながら、私ができるの巣aを考えていた、とwhileループはforループを続けることができたときに決まります旗を持っているでしょう。
このコードは、url
の値を単一のURLとしてハードコードするときに機能します。したがって、送受信に成功したことがわかります。
ありがとうございました!
'array'変数をループするのではなく、たとえば、最初の要素から開始し、' res.on( 'end'、function(){...の中にコールバックを入れることができます/ * callback here */...}) 'あなたのプログラムに、応答が終了するたびに新しい要求を開始するように指示します。どう思いますか? – focorner
新しいリクエストを開始するにはどうすればよいですか? – hamza765
以下のコードに基づいて例をご覧ください。私はその例をテストしなかったことに注意してください。私は単に私の提案を説明するためにいくつかの行を追加しました。 – focorner