0
如果你是一個JavaScript函數內,要更新的canvas元素則更新發生,只有當函數返回。有時候希望更新畫布並保持功能正常運行。有沒有辦法做到這一點?更新帆布返回
如果你是一個JavaScript函數內,要更新的canvas元素則更新發生,只有當函數返回。有時候希望更新畫布並保持功能正常運行。有沒有辦法做到這一點?更新帆布返回
一般來說:不,沒有直接的方法可以做到這一點,因爲瀏覽器會阻塞每個UI事件,直到其腳本例程終止。這包括更新畫布(甚至關閉瀏覽器窗口,例如,當腳本進入無限循環時,您可能在之前的某處看到過)。
無論如何,或多或少醜陋的方式做到這一點,是使用在A點的setTimeout,你希望你的畫布進行更新:
function reactOnSomething(){
doSomeStuff();
drawMyCanvas();
setTimeout(function(){
goOnWithOtherStuff();
}, 20);
}
這個問題是非常廣闊的。你可以發佈你的代碼,以便我們可以修復它嗎? –
@WaisKamal這不是代碼,我想知道是否有一般的解決方案。這就是爲什麼它有點寬泛。 – saadtaame
使用發電機功能。它們提供了創建可中斷執行的手段。 Yield語句定義了中斷點,第二個控制定時動畫幀循環可以通過調用next提供的迭代對象來控制從yield到yield語句的進度。這個答案顯示瞭如何完成一個算法的步驟的可視化。 http://stackoverflow.com/a/40741857/3877726 – Blindman67