我需要在每个axios POST调用之间设置一些延迟,以便POST调用按顺序进行-等待一个完成后再发布下一个POST。
我输入的延迟代码似乎延迟了-控制台日志显示“ Delaying”并在那里暂停了几秒钟,但是在服务器端,POST调用仍然是并发的。
key (string),
value(string),
type (string) - tells if the value is of string, integer, boolean, json type
答案 0 :(得分:0)
为了在发出下一个请求之前等待一个HTTP请求完成,您需要对HTTP请求进行排队(队列异步操作)。步骤是:
示例代码如下:
const axios = require('axios');
let queue = [];
function sendRequest(callback) {
axios.get('http://example.com')
.then(function() {
callback();
}).catch(function () {
callback();
});
}
function addRequestToQueue() {
let id = (Math.random()*100000).toFixed(0);
if (queue.length === 0) {
sendRequest(function() {
queue.splice(queue.indexOf(id), 1);
consumeQueue();
});
}
queue.push(id);
}
function consumeQueue() {
if (!queue.length) {
return;
}
let id = queue[0];
sendRequest(function() {
queue.splice(queue.indexOf(id), 1);
consumeQueue();
});
}
addRequestToQueue();
addRequestToQueue();
addRequestToQueue();
addRequestToQueue();
addRequestToQueue();