【问题标题】:How to defer function execution in jQuery如何在jQuery中延迟函数执行
【发布时间】:2014-05-21 19:28:45
【问题描述】:

我今天对延迟 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 在函数执行时冻结。

然后我想哦,也许我可以再次调用 promise!

 $('#filterTheTable').click(function () {
                        $('#waitingGif').show('fast')
                                 .promise()
                                 .done(FilterTable)
                                 .promise()
                                 .done(Function(){$('#waitingGif').hide('fast')});

但我收到一个错误,即该对象不支持承诺(我现在假设 .Done() 没有返回正确的类型)

我知道这必须很容易做到……但我似乎并没有全神贯注于此。有什么好的帖子/解决方案可以让我重回正轨吗?

谢谢大家。

【问题讨论】:

  • 您的目标是在加载 gif 时显示加载图像,然后在完成时将其删除,然后显示 gif?
  • .done().promise() 没有意义。那里的思考过程是什么? .done() 已经返回了相同的承诺。
  • 你能发个小提琴吗?
  • @Epik 我的目标是显示加载中的 gif,然后在 gif 旋转时运行代码,然后将其隐藏。
  • @KevinB 我只是想把 promise 串起来,x 也是,然后是 y,然后是 z

标签: javascript jquery


【解决方案1】:

所以我找到了答案。基本上,当我在做ShowGif.Promise.Done(Function) 然后在Function 隐藏 gif 时,我做得很好。 gif冻结的答案在this great answer.

总而言之,DOM 繁重的操作与您的 GIF 动画效果不佳。您可以拆分函数,以便它模拟多线程。为此,您只需拆分函数并让 DOM 呼吸

谢谢大家。

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 2014-09-15
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多