我有一个如下所示的ajax:
$.get('/api/get-data)
.then(function (res) {
console.log(res);
});
我想编写一个循环来获取数据,像这样:
while (true) {
$.get('/api/lastbids/' + auctionId)
.then(function (res) {
console.log(res);
});
}
我希望在每个请求之间设置延迟,我可以使用setinterval
,但我希望在500毫秒后发送另一个数据请求后,获取响应完成。
答案 0 :(得分:2)
您可以使用简单的函数递归和重复的setTimeout
:
function getBidsLoop () {
$.get('/api/lastbids/' + auctionId).then(function (res) {
console.log(res);
setTimeout(getBidsLoop, 500); // << Recursive call
});
}
getBidsLoop (); // Start
答案 1 :(得分:0)
您可以为每个请求使用回调
var firstRequest = function(callback) {
// some random endpoint for result
$.get('https://pokeapi.co/api/v2/pokemon/1/', function(data) {
callback(data);
}).fail(function() {
callback(false);
});
},
secondRequest = function(callback) {
// some random endpoint for result
$.get('https://pokeapi.co/api/v2/pokemon/2/', function(data) {
callback(data);
}).fail(function() {
callback(false);
});
};
// first, run first request, wait for response, then run second request. finally grab both request's responses.
firstRequest(function(firstResult){
if (firstResult) {
// you can wrap the code below with setTimeout if you want
secondRequest(function(secondResult) {
console.log(firstResult, secondResult);
});
}
});