你想兩個定時器(如你所說)
- 重複間隔時間做下調查和
- 一次性到期而放棄,如果服務器從來沒有響應
如果輪詢成功後,您要清除輪詢間隔和取消故障定時器。如果到期定時器觸發要清除輪詢間隔
var checkCount = 0;
function checkComplete() {
console.log("test " + checkCount);
if (checkCount++ > 10) {
console.log("clearing timeout");
window.clearInterval(pollInterval);
window.clearTimeout(expireTimer);
}
}
function cancelPolling(timer) {
console.log("clearing poll interval");
window.clearInterval(pollInterval);
}
var pollInterval = window.setInterval(checkComplete, 500);
var expireTimer = window.setTimeout(cancelPolling, 10000);
您可以用checkCount
常數「10」小提琴 - 保持較低的模擬投票成功,提高它更高的發生超時前checkCount是到達,模擬輪詢失敗。