У меня есть функция, которая вызывает какую-то службу и возвращает ответ. Если ответ FALSE, он ждет 1 секунду, чтобы снова запросить службу (которая затем, вероятно, возвращает TRUE).
Как мне сделать, чтобы вызвать мою функцию "checkService()" один раз и получить реальное значение? (первая или вторая попытка, определяемая функцией) Я устанавливаю значение RET внутри функции, но функции всегда возвращают первый RET, потому что setTimeout асинхронный.
Другими словами, мне нужен какой-то «сонный» трюк или какое-либо решение (может быть и jQuery).
function checkService() {
//this may return TRUE or FALSE
var RET = someServiceResponse();
// here waits 1 second, then ask the service again
if( RET == true ) {
return true;
} else {
setTimeout(
function() {
//it must return the second response of the service
RET = someServiceResponse();
},
1000
);
// I want the checkService() return the response after de timeout
return RET;
}
}
function alertResponse() {
alert( checkService() );
}