私は、負荷の高いコンピューティングを実行すると同時に、ユーザーフレンドリーである必要がある JavaScript クライアント側プロジェクトに取り組んでいます。これはもちろん非同期機能を意味しますが、コンピューターが重いタスクを実行している間にユーザーが何かを実行できるようにすることも意味します。
これを非同期ループの例として取り上げます。
function async_operation(){
function do_stuff(){
var i=0;
while(i<1000000000){
... //do some stuff (to be more specific: localforage.setItem)
++i;
}
}
setTimeout(do_stuff, 0);
//do next opearions...
}
このループは完全かつ非同期に機能します。問題は、ユーザーが何か、たとえば次のボタンをクリックした場合です。
<button onclick="alert('hello')">click me</button>
ループが終了した直後に警告メッセージが表示されます! そのため、ユーザーは機能が終了するまで何もクリックできません。
このタスク中にユーザーがいくつかのイベントをトリガーできるようにする方法はありますか?