3

プロジェクトの特定の数までカウントするJavascriptを書いています。数は約 100,000 で、処理が完了するまでに約 10 ~ 15 秒かかります。ユーザーがページを呼び出すとすぐにスクリプトを実行し、スクリプトが完了するとリダイレクトします。実行中に DOM を更新するために 10 ミリ秒でも一時停止して、「まだ動作しています」などのフィードバックを与えることはできますか?

jQuery の使用を避けたいのですが、この状況では Web ワーカーはオプションではありません。これは実際のアプリケーションではないことに気付きました!

編集:サンプルとしていくつかのコードを追加しました:

頭の中で

function myCounter (target) {
    var t = target;
    var count = 0;
    while (t != count){
        if (t == count) {
        window.location.replace("http://example.com"); // redirect
        }
    count++;
    }
}

体内で

<script>myCounter(100000);</script>
4

1 に答える 1

3

ほとんどのブラウザーでは、JavaScript と UI は同じスレッドで実行されます。setTimeout(または)を使用して、スレッドをブラウザに戻すことができますsetInterval

var myNumber = 0;
updateNumber();

function updateNumber(){
    // do heavy work for great good, ideally divided into smaller chunks

    document.getElementById('updateDiv').innerHTML = 'still working, up to ' + myNumber;

    if(myNumber < limit) {
      setTimeout(updateNumber, 20);
    }
}

一般的なプロセスの詳細については、この回答を読む価値があります: https://stackoverflow.com/a/4575011/194940

于 2013-02-28T03:00:49.067 に答える