1

JavascriptでN回まで関数を呼び出して、真の値を取り戻すことができるかどうか疑問に思っています。戻り値が。の場合、すぐに戻るはずですtrue。N回後の戻り値に関係なく、少なくとも戻る必要があります。

私は既存のリソースを少し読んで、それが不可能であることに気づきましたが、通常はコールバック関数を使用して行われます。そのためのパターン/ベストプラクティス/例はありますか?

4

1 に答える 1

1

私は次の実装を思いついた:

multitry = function(time, tries, func, callback) {
    counter = 0;
    timer = setInterval(function() {
        ((success = func(++counter)) || (counter >= tries))
            && !clearInterval(timer) 
            && callback(success, counter)      
        ;
    }, time);
};

たとえば、タグ編集が有効になっている場合、250ミリ秒ごとに30回試行するには、次のコマンドを実行できます。

javascript:(function(){
    multitry = function(time, tries, func, callback) {
        counter  = 0;
        timer    = setInterval(function() {
            counter++;
            var value = func(counter);
            if (value || counter >= tries) {
                clearInterval(timer);
                callback(value, counter);
            }
        }, time);
    };
    multitry(
        250, 
        30, 
        function() {
            return $('#tagnames').length;
        }, 
        function (success) {
            console.log('Tag editor did open:', success);
        }
    );
}());
于 2012-12-20T12:19:34.623 に答える