Проще иметь действие на стороне сервера, просто отвечать отрицательным ответом до тех пор, пока значение не будет готово, и настроить клиентскую сторону для повторного опроса (с помощью setTimeout ()) до получения положительного ответа или фиксированного числа. сбоев не наблюдается.
var timer;
var count = 0;
function poll(url) {
timer = setTimeout(function() {
$.ajax({
url: url,
success: function(data) {
if (data.Status) {
...do something...
}
else {
if (++count > 10) {
...failure action...
}
else {
poll(url);
}
}
...other options...
})
},5000)
}
Затем на стороне сервера используйте что-то, что делает (псевдокод) ...
if operation is not complete
return serialize( { Status : false } )
else
data = ....
data.Status = true
return serialize(data)
end