ฉันมีฟังก์ชั่นที่เรียกใช้บริการบางอย่างและส่งคืนการตอบกลับ หากการตอบกลับเป็น 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() );
}