2013-06-11 189 views
1

我正在运行一个脚本,它不断地输出一个名为rects[0]的值数组。下面是代码:for循环中的延迟

function draw_faces(ctx, rects, sc, max) { 
      var on = rects.length; 
      if(on && max) { 
       jsfeat.math.qsort(rects, 0, on-1, function(a,b){return (b.confidence<a.confidence);}) 
      } 
      var n = max || on; 
      n = Math.min(n, on); 
      var r; 
      for(var i = 0; i < n; ++i) { 
       r = rects[i]; 
       ctx.strokeRect((r.x*sc)|0,(r.y*sc)|0,(r.width*sc)|0,(r.height*sc)|0); 
       if (rects[0].width > 41.5 && rects[0].height > 41.5) 
             WAIT TIME AND CHECK AGAIN 
        THEN console.log("face length"); 

      } 
     } 

如果这些变量仍高于门槛我想要做的是初始后if语句检查rects [0]价值,我想等待一段时间,然后再次检查41.5然后进行一些操作,在这种情况下是console.log(“face length”)。

所以基本上我需要检查rects[0],然后等待几秒钟,然后再次检查其值是否高于阈值。

+2

[的setTimeout(https://developer.mozilla.org/en-US/docs/Web/API/window.setTimeout)? – Josh

+0

'setTimeout(func,i * delay)' – elclanrs

+0

但在循环内执行多次函数的权利?我只想执行一次。 – user2266621

回答

0

你不想延迟,你想设置一些代码在几秒钟后运行。使用setTimeout这样的:

function draw_faces(ctx, rects, sc, max) { 
     var on = rects.length; 
     if(on && max) { 
      jsfeat.math.qsort(rects, 0, on-1, function(a,b){return (b.confidence<a.confidence);}) 
     } 
     var n = max || on; 
     n = Math.min(n, on); 
     var r; 
     for(var i = 0; i < n; ++i) { 
      r = rects[i]; 
      ctx.strokeRect((r.x*sc)|0,(r.y*sc)|0,(r.width*sc)|0,(r.height*sc)|0); 
      if (rects[0].width > 41.5 && rects[0].height > 41.5) { 

        setTimeout(function() { 
         if (rects[0].width > 41.5 && rects[0].height > 41.5) { 
          console.log("face length"); 
         } 
        }, 3000); 
      } 
     } 
    }