我有一個需求,我需要從js通過ajax查詢數據庫以檢查狀態。如果狀態爲「激活」,則應停止輪詢,並且警報應彈出「案件現在處於活動狀態」。 js應該每2秒檢查一次數據庫,直到db狀態返回「active」。你能爲此提供一個優雅的js例程嗎?下面是一些一般的JS顯示什麼我想做的事:如何設計一個優雅的js輪詢例程?
function ReportAsActivePoll()
{
for(var i=0; i<10; i++)
{
setTimeout(StatusIsActive,(i*2000));
if(statusIsActive)
{
ReportAsActive();
break;
}
}
}
var statusIsActive = false;
function StatusIsActive(case)
{
statusIsActive = GetStatusFromDB(case) == "active";
}
function ReportAsActive()
{
alert("case is now active")
}
的幾個注意事項:
- 我知道上面的代碼是不正確的。這僅用於說明目的。
- 上面的代碼將調用StatusIsActive 10次。我希望在狀態處於活動狀態後,呼叫可以停止/中止/停止。不過,我認爲投票需要提前排隊所有電話,所以我不知道如何實現這一點。
在Web瀏覽器中從DB獲取數據的異步AJAX調用或類似node.js的同步調用服務器端?它對你如何處理它有很大的影響。如果服務器知道數據庫何時更新,那麼使用套接字會更好,因此您不必輪詢輪詢更改,而是將消息發送到打開的連接。 – zzzzBov