我今天疯狂地混淆了延迟jquery执行的所有可用代码。
现在我写了这个
$('#filterTheTable').click(function () {
$('#waitingGif').show('fast')
.promise()
.done(FilterTable);
所以GIF出现了,几秒钟之后桌子会过滤掉,一切都很好(除了我没有隐藏GIF。
所以我扔进去......
$('#filterTheTable').click(function () {
$('#waitingGif').show('fast')
.promise()
.done(FilterTable);
$('#waitingGif').hide('fast');
正如你们许多人可能已经看到的那样,gif闪烁一秒钟会发生什么,并且FilterTable函数继续执行。
我已经阅读了一些内容,但似乎无法绕过延迟函数。所以我放弃并将hide('fast')
代码放在FilterTable
中,但现在GIF在函数执行时冻结。
然后我想,哦,也许我可以再次致电承诺!
$('#filterTheTable').click(function () {
$('#waitingGif').show('fast')
.promise()
.done(FilterTable)
.promise()
.done(Function(){$('#waitingGif').hide('fast')});
但是我得到一个错误,即该对象不支持promise(我现在假设.Done()
没有返回正确的类型)
我知道这很容易做到......但我似乎并没有把我的想法包裹起来。是否有任何好的帖子/解决方案可以让我重回轨道?
感谢所有人。
答案 0 :(得分:0)
所以我找到了答案。基本上我正在做ShowGif.Promise.Done(Function)
然后在Function
内隐藏gif。 gif冻结的答案在this great answer.
总之,DOM重型操作不适合您的GIF动画。您可以拆分该功能,以便模拟多线程。要做到这一点,你只需要拆分功能,让DOM 呼吸
谢谢大家。