[英]Javascript: wait loop for jquery callback
I have a ajax like as below: 我有一个像下面的ajax:
$.get('/api/get-data)
.then(function (res) {
console.log(res);
});
And i want write a loop to get data, like this: 我想写一个循环来获取数据,像这样:
while (true) {
$.get('/api/lastbids/' + auctionId)
.then(function (res) {
console.log(res);
});
}
I want set delay between every request, i can use setinterval
but i want when get response finished, after 500ms send another request for data. 我想在每个请求之间设置延迟,我可以使用setinterval
但是我想在500毫秒后发送另一个数据请求后,获取响应完成。
You could use a simple function recursion with a recurring setTimeout
: 您可以使用带有递归setTimeout
的简单函数递归:
function getBidsLoop () {
$.get('/api/lastbids/' + auctionId).then(function (res) {
console.log(res);
setTimeout(getBidsLoop, 500); // << Recursive call
});
}
getBidsLoop (); // Start
You can use callbacks for each request 您可以为每个请求使用回调
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);
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.