我正在运行一个脚本,该脚本不断推出名为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的阈值,然后再执行一些操作,在这种情况下为console.log( “脸部长度”)。

因此,基本上我需要检查rects[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);
            }
        }
    }

10-07 14:08