我有一個叫做「loop」的函數,它被重複使用setInterval()調用。在該函數內部,我需要另一個函數,它必須被稱爲「delay()」(它必須是確切的語法)。在不凍結瀏覽器的情況下睡在setInterval裏面
所以我結束了這一點:
function loop() {
console.log("some code")
delay(100)
console.log("some more code")
delay(100)
}
if (typeof loop != "undefined")
window.loopInterval = setInterval(loop, 1)
function delay(millis) {
var now = Date.now();
while(Date.now() < now + millis){}
}
這工作得很好,但它凍結使其不能正常顯示某些變化瀏覽器。
現在有什麼辦法可以改變延遲功能,以便它暫時暫停setInterval?
正如我所說的,循環和延遲函數的語法必須保持不變。是的,我有很好的理由。
所有這些誰不相信我,我其實是有一個很好的理由,在這裏你去:爲Arduinos書面https://github.com/T-vK/LedStripSimulator
代碼幾乎總是使用循環()函數和延遲()也對Arduinos來說是非常普遍的事情,因爲他們往往只做一件事。而JS模擬器的目的是儘可能準確地複製Arduino語法,當然需要一個同步延遲功能。
簡單的回答:不。告訴我們你打算如何完成某件事情,告訴我們你正試圖解決的問題。 (而當你試圖解決的問題不是「如何才能完成這項工作」,當它根本無法設計瀏覽器的本質時) –
沒有。不能用你的「精確語法」來實現 – rgthree
這不是導致延遲的正確方法。這顯然會暫停腳本執行,直到while循環退出。你可以使用'setTimeout'來解決問題。 –