/*
有一项目上需要用到这样的功能,就是在while当中实现像sleep当中的延时一样,不知道有什么办法实现没有?
*/
var looping = true
while(looping)
{
   //...............这里是处理网页元素的代码
   //...............这里是延时3秒钟的代码(我现在就是想请教大家这个问题如何实现?)
   //...............这里是if判断代码,如果为true则looping=flase退出循环
}

解决方案 »

  1.   

    setimeout函数 可以延时了
    楼主可以换一个方式来实现有全局变量
    xsetimeout
    里面的函数递归调用
    就达到while的效果了
      

  2.   

    var a = setTimeout(function (){if(...){clearTimeout(a);}},3000);
      

  3.   

    function sleep(millisecond) {
    var endTime = +new Date + millisecond;
    while (+new Date < endTime) {
    /* 打酱油 */
    }
    }
      

  4.   

    var aaa=1;
    setTimeOut("a()",3000)
    function a()
    {
      //....别的逻辑
      if(aaa<4)setTimeOut("a()",3000);
    }
    楼主可以照这个思路想想
      

  5.   

    http://topic.csdn.net/t/20060303/22/4591744.html
      

  6.   

    var looping = true,timer = 1000;//1000毫秒 = 1秒
    var s = setInterval(function(){
        alert('执行一次');
        if(!looping)clearInterval(s);
    },timer);
      

  7.   

    主要是浏览器执行js是单线程的,有Sleep之类的也不行
      

  8.   

    看错需求了,
    可以用闭包模拟下。<script>
    (function(window){
        var i = 0,looping = true,hasSleep = false;
        window.loopFn = function(){
            while(looping){
               alert(++i);
               if(!hasSleep  && i == 3)return setTimeout(loopFn,3000),hasSleep = true,null;
               if(i>5)break;
            }
        };
    })(window);
    loopFn();
    </script>
      

  9.   

    水平有限,发个拙例子,只为蹭点分!
    /**
    * op = {
    * conditions: {
    * fun: functionName,
    * param: [p1, p2, p3,...]
    * },
    * timeOut: 3000, //seconds
    * }
    **/
    function delayAction(op) {
    var co = op.conditions;
    var ca = op.callback;
    if(co.fun.apply(co, co.param)) {

    var div = document.createElement('div');
    div.innerHTML = 'xxxxx';
    document.getElementsByTagName('body')[0].appendChild(div);

    setTimeout(function() {
    if(co.fun.apply(co, co.param)) {
    delayAction(op);
    }
    }, op.timeOut);
    }
    }

    delayAction({
    conditions: {
    fun: function() {
    return document.getElementsByTagName('body') && document.getElementsByTagName('div').length < 10? true : false;
    },
    param: []
    },
    timeOut: 3000,
    });
      

  10.   


    var looping = true
    window.setTimeout(function(){
    //...............这里是处理网页元素的代码
       //...............这里是延时3秒钟的代码(我现在就是想请教大家这个问题如何实现?)
       if(looping) window.setTimeout(arguments.callee,25);
    },25)
      

  11.   

    只能用setTimeout模拟了,没别的办法