JavascriptでN回まで関数を呼び出して、真の値を取り戻すことができるかどうか疑問に思っています。戻り値が。の場合、すぐに戻るはずですtrue
。N回後の戻り値に関係なく、少なくとも戻る必要があります。
私は既存のリソースを少し読んで、それが不可能であることに気づきましたが、通常はコールバック関数を使用して行われます。そのためのパターン/ベストプラクティス/例はありますか?
JavascriptでN回まで関数を呼び出して、真の値を取り戻すことができるかどうか疑問に思っています。戻り値が。の場合、すぐに戻るはずですtrue
。N回後の戻り値に関係なく、少なくとも戻る必要があります。
私は既存のリソースを少し読んで、それが不可能であることに気づきましたが、通常はコールバック関数を使用して行われます。そのためのパターン/ベストプラクティス/例はありますか?
私は次の実装を思いついた:
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);
}
);
}());