2017-02-27 7 views
0

JavaScript関数の内部にあり、キャンバス要素を更新する場合は、関数が返るときにのみ更新が行われます。キャンバスを更新して機能を実行し続けることを望むこともあります。これを達成する方法はありますか?関数の前にキャンバスを返す

+1

この質問は非常に広いですが。私たちが修正できるようにコードを投稿してください。 –

+0

@WaisKamalコードに関してではなく、一般的な解決法があるかどうかを知りたい。だからそれは少し広いです。 – saadtaame

+1

ジェネレータ機能を使用します。それらは中断可能な実行を作成する手段を提供します。歩留りステートメントはブレークポイントを定義し、第2の制御されたタイムドアニメーションフレームループは、提供された反復オブジェクトでnextを呼び出すことによって歩留まりから歩留まりステートメントへの進行を制御することができます。この回答は、アルゴリズムのステップを視覚化する方法を示しています。 http://stackoverflow.com/a/40741857/3877726 – Blindman67

答えて

1

一般的に、いいえ、スクリプトルーチンが終了するまでブラウザがすべてのUIイベントをブロックするため、簡単な方法はありません。これには、キャンバスの更新(ブラウザウィンドウを閉じるなど)も含まれます。たとえば、スクリプトが無限ループに陥ったときなど、前のどこかで見たことがあります。とにかく

、これを行うには、多かれ少なかれ醜い方法、あなたはあなたのキャンバスを更新したい時点でのsetTimeoutを使用している:

function reactOnSomething(){ 
    doSomeStuff(); 
    drawMyCanvas(); 
    setTimeout(function(){ 
     goOnWithOtherStuff(); 
    }, 20); 
} 
関連する問題