我想知道是否可以在 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);
}
);
}());