Я пытаюсь отправить вызовы API на сервер NodeJS. К сожалению, сервер (который не был сделан мной) не позволит мне делать асинхронные вызовы.Как сделать запрос дождитесь завершения предыдущего запроса?
Я пытаюсь выяснить способ сделать каждый запрос ждать завершения предыдущего запроса перед отправкой.
Вот мой код:
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();
});
}
Я думал, что я мог вкладываете в то время как петля внутри для цикла, и цикл в то время как будет иметь флаг, который будет диктовать, когда цикл может продолжать идти.
Теперь этот код работает, когда я жестко указываю значение url
как единый URL-адрес, поэтому я знаю, что мне удастся отправить и получить.
Благодарим за помощь/помощь!
Вместо прохода через 'array' переменной, вы могли бы, например, начать с первого элемента, а затем положить обратный вызов внутри' res.on («конец», функция() {.../* callback здесь */...}) ', чтобы сообщить вашей программе, чтобы начать новый запрос каждый раз, когда заканчивается ответ, пока больше не будет отправлено запросов. Как вы думаете? – focorner
Как мне начать новый запрос? – hamza765
См. Пример на основе вашего кода ниже. Обратите внимание, что я не тестировал этот пример. Я просто добавил несколько строк, чтобы проиллюстрировать мое предложение. – focorner