第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JavaScript while loop + setInterval 在 Django 中不起作用

JavaScript while loop + setInterval 在 Django 中不起作用

繁華開滿天機(jī) 2022-10-13 10:58:10
我正在使用 Django 開發(fā)一個(gè)網(wǎng)站。我有大約 50 個(gè)函數(shù)。并且大約需要 1 分鐘才能獲得所有這些結(jié)果。問題是我在我的應(yīng)用程序中使用了 heroku。Heroku 有 30 秒的時(shí)間來獲取請(qǐng)求。有人建議我使用后臺(tái)任務(wù)?,F(xiàn)在我在 Python RQ 中使用后臺(tái)作業(yè)。對(duì)于每個(gè)功能,我在 Views 中做了一個(gè)單獨(dú)的任務(wù)。以下是其中一項(xiàng)任務(wù)的示例:task_robots_url = q.enqueue(Robots(url).get_url)robots_url = task_robots_url.result現(xiàn)在我需要檢查模板中的工作是否完成。完成后,顯示結(jié)果。我想每秒檢查一次 JS 是否完成了工作。如果尚未完成 - 向用戶顯示“正在加載...”消息。如果完成 - 顯示結(jié)果。這是我的 JS 代碼:  <script>    var h1 = document.getElementById("h1");    var job_result = "{{ robots_url }}"    var test = function () {      if (job_result ==  "") {          h1.innerText = "Waiting...";          } else if (job_result == "None") {          h1.innerText = "Waiting ...";          } else if (job_result == undefined) {          h1.innerText = "Waiting ...";          } else {           clearInterval(inter);          h1.innerText = job_result;           }      }    var inter = setInterval(test, 1000);  </script>但這不起作用。當(dāng)結(jié)果頁面開始時(shí) - 我有一個(gè)空的結(jié)果。它顯示等待。然后我沒有結(jié)果。它仍然顯示等待。但是現(xiàn)在等待之后沒有結(jié)果。在 Python RQ 的文檔中,據(jù)說我應(yīng)該在我的代碼中放置幾秒鐘的 time.sleep()。如果我把 time.sleep(2) - 我得到了結(jié)果。但是,如果我為我的 50 個(gè)函數(shù)中的每一個(gè)添加 time.sleep(2) - 我將得到 100 秒。Heroku中的限制只有30秒......所以我需要在沒有sleep()的情況下檢查并顯示結(jié)果......
查看完整描述

1 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

setInterval() 方法以指定的時(shí)間間隔(以毫秒為單位)調(diào)用函數(shù)或計(jì)算表達(dá)式。


setInterval() 方法將繼續(xù)調(diào)用該函數(shù),直到調(diào)用 clearInterval() 或關(guān)閉窗口。


您多次調(diào)用 setInterval 最終導(dǎo)致瀏覽器崩潰。


假設(shè) job_result 值在 10 秒后發(fā)生變化,您可以編寫以下代碼:


var job_result = {{ job_result }};


var loadingMessage = function (){

    if (!job_result) {

        document.write("Loading ...");

    }

    else {

        return

    }

}


setInterval(() => loadingMessage, 1000);

您可以調(diào)用 return 以停止運(yùn)行間隔,也可以使用 setTimeout 并調(diào)用清除間隔的函數(shù)


查看完整回答
反對(duì) 回復(fù) 2022-10-13
  • 1 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)