【www.gdgbn.com--浏览器】



setTimeout example

<script type="text/javascript教程">
function delayedAlert()
{
  timeoutID = window.setTimeout(slowAlert, 2000);
}

function slowAlert()
{
  alert("That was really slow!");
}

function clearAlert()
{
  window.clearTimeout(timeoutID);
}

window.setTimeout("window.parent.generateOutput()", 1000);
function generateOutput(aConcise) {
  if(aConcise)
    parent.generateConciseOutput();
  else
    parent.generateOutput();
}
window.setTimeout(generateOutput, 1000, true);

</script>






再来看一个setTimeout 与setInterval的实例
<script >
if(!+" 1") {
    (function(f){
        window.setTimeout =f(window.setTimeout);
        window.setInterval =f(window.setInterval);
    })(function(f){
        return function(c,t){
            var a=[].slice.call(arguments,2);
            return f(function(){
                c.apply(this,a)},t)
            }
    });
}

</script>

延迟加载
0

<script>
var i = 0;
div.onresize = function(){ show.innerHTML = ++i; }
setTimeout("div.innerHTML="test"", 1000)
setTimeout("div.style.height="50px"", 2000)
</script>


看一个更高效的延时加载

一般情况下,触发程序会绑定到容器的scroll和resize事件中。
但很多时候scroll和resize会被连续触发执行,例如resize的bug,大量连续的执行大大降低效率。
为了防止无意义的连续执行,程序设置了一个_delay方法来做延时:
JScript codevar oThis = this, delay = this.delay;
if ( this._lock ) {
    this._timer = setTimeout( function(){ oThis._delay(run); }, delay );
} else {
    this._lock = true; run();
    setTimeout( function(){ oThis._lock = false; }, delay );
}


原理是用一个_lock属性,程序运行一次后_lock设为true,并用一个setTimeout延时设置它为false。
在锁定(_lock为true)期间,程序不会立即执行,达到延时的效果。
为了保证最后一次触发程序即使在锁定期间也能完成,还用了一个_timer来延时这次执行。


本文来源:http://www.gdgbn.com/bangongshuma/25328/