延迟for循环

时间:2013-06-11 21:57:57

标签: javascript for-loop time delay wait

我正在运行一个不断推出名为rects[0]的值数组的脚本。这是代码:

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的阈值然后一些动作,在这种情况下控制台.log(“面子长度”)。

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

1 个答案:

答案 0 :(得分: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);
            }
        }
    }