1

JavaScript ライブラリを構築しています。私は次のように機能する遅延機能に取り組んでいます:

function delay(ms) {
    var start = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > ms){
            break;
        }
    }
}

私はこのようなことができるという考えです:

window.onload = function() {
  delay(5000);  //this function will act 5 seconds after the page loads
  document.getElementById('Header').innerHTML = 'Welcome';
};

遅延は正常に機能しますが、関数を遅延させるだけでなく、ページ上のすべての JavaScript を停止しwindow.onloadます。

私に何ができるか知っている人はいますか?

4

3 に答える 3

6

遅延メソッドの代わりに setTimeout を使用してください。UI をブロックすることはなく、はるかにクリーンです。

setTimeout(function() {
   document.getElementById('Header').innerHTML = 'Welcome';
}, 5000);
于 2013-06-14T15:36:11.517 に答える
2

本当に の周りに関数を構築したい場合setTimeout()は、自由に行うことができます:

function delay(ms, callback) {
  setTimeout(callback, ms);
}

ブロッキング メカニズムなしでコード ブロックのアクションまたは実行を遅らせる方法は他にありません。

また、setTimeout()非同期で動作するため、常にコールバック関数を提供する必要があります。

于 2013-06-14T15:44:07.137 に答える