Как сделать Javascript setTimeout возвращает значение в функции
У меня есть функция, которая вызывает некоторые службы и возвращает ответ. Если ответ ЛОЖЬ, он ждет 1 секунду, чтобы снова запросить службу (которая затем, вероятно, возвращает ИСТИНА).
Как я могу сделать так, чтобы однажды вызвать мою функцию 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() );
}