【发布时间】:2018-03-27 18:57:21
【问题描述】:
在页面加载时,我设置了一些函数并调用第一个应该逐步完成的函数。
after5Seconds();
function after5Seconds() {
setTimeout(hideOne, 5000);
}
function hideOne() {
$('.toggleme#one').fadeOut(showTwo);
}
function showTwo() {
$('.toggleme#two').fadeIn('125', 'swing', startAllOver);
}
我发现经常有一些回调被停止并默默地失败,我开始将每个回调更新为更像:
- setTimeout 在 N 毫秒内触发回调(如果尚未触发)
类似:
function wrapMeInDelay(fn, timer) {
var hasBeenCalled = false;
var ctx = function() {
if (hasBeenCalled) {
return false;
} else {
hasBeenCalled = true;
return fn();
}
};
setTimeout(ctx, timer);
return ctx;
}
基本上我想开始向回调添加超时,以确保在 jquery/whatever 回调没有首先触发它时调用它们。
还有其他我不知道的更常见的方法吗?
【问题讨论】:
-
我想您可能正在寻找
.queue?或者,由于它涉及多个元素,因此可以利用.when()and.done()进行结帐。 -
我认为你错过了我的观点。有时,出于某种原因,打算调用回调的对象失败。我想添加各种超时,以便回调由超时或调用者触发
-
好的,我明白了,我的错误。因此,如果它静默失败,您将无法利用诸如
.fail()之类的延迟错误处理程序之一,对吗?你有没有探索过为什么它会默默地失败?解决这可能更像是根本原因解决方案,因为您使用的模式更多地治疗症状。并不是说这是不正确的,因为我不了解您所面临问题的全部背景——我只是在推测。
标签: javascript callback