【问题标题】:jQuery: How to fire event when all asynchronous calls return?jQuery:当所有异步调用返回时如何触发事件?
【发布时间】:2023-03-12 23:05:01
【问题描述】:

我有一个 jQuery 应用程序,它从五个异步服务器调用加载数据。在所有五个调用都返回之前,我不想显示任何数据。 (我计划在此之前显示正在加载的消息。)

如何检测所有五个呼叫何时都返回?我考虑让每个回调方法增加一个变量(也许使用 jQuery 的 data() 方法),然后等待值变为 5。(我还不确定我将如何监听该事件。)我不认为这是然而,一个非常好的解决方案。如果两个电话同时返回会发生什么?

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript jquery events asynchronous


    【解决方案1】:

    如果你已经在使用 jQuery 进行 AJAX 调用,你可以使用$.ajaxStop(),当所有当前调用返回时触发,你可以像这样使用它:

    $("#loading").ajaxStop(function() {
      $(this).fadeOut();
    });
    

    就它只是一个事件而言,这与.click() 并没有什么不同,如果您愿意,您可以自己使用ajaxStop 事件,如下所示:

    $("#loading").bind('ajaxStop', function() {
      $(this).fadeOut();
    });
    

    【讨论】:

    • 无法更好地解释它! :)
    • +1 - 你再次向我展示了一些我从不知道 jQuery 所做的事情。我一直在使用计数器变量..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2012-03-17
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多