1

と呼ばれる値の配列を常に出力するスクリプトを実行しています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]してから数秒待ってから、その値がしきい値を超えているかどうかを再度チェックする必要があります。

4

1 に答える 1

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);
            }
        }
    }
于 2013-06-12T04:02:18.633 に答える