【问题标题】:How do I use jQuery .when() function with a dynamic set of ajax calls?如何将 jQuery .when() 函数与一组动态 ajax 调用一起使用?
【发布时间】:2011-07-11 19:30:49
【问题描述】:

我正在使用 JqGrid,对于正在加载的网格中的每一行,我都在进行 ajax 调用以获取更多数据。

完成后,我需要应用一些格式。

我想使用 $.when(),但我不知道如何调用它。我正在研究 apply() 方法,但我仍然不知道如何正确使用它。

这是我的代码:

 $(rows).each(function () {
                        $.ajax(
                        {
                            url: url,
                            data: data,
                            success: function (result) {

                                }
                            }
                        });
                    });

   $.when(**What do i pass here??**).done(function () {

                    });

我曾尝试将每个 $.ajax 调用推送到一个数组,但我无法直接传递该数组并调用所有内容。

提前感谢您的帮助!

【问题讨论】:

    标签: javascript ajax jquery jquery-deferred


    【解决方案1】:

    这可能根本不起作用,事实上我很好奇它是否会。尝试构建 promise 对象数组,然后调用 $.when.apply(null, arr).done(function () { ... });

    apply 允许您触发函数并动态传递参数数组,例如在本例中。

    【讨论】:

    • 这就是我正在尝试的,但 apply 不会返回 jquery 对象,对吧?所以 .done() 不会被定义。我现在正在测试它。
    • 调用apply 应该返回被触发的函数将返回的任何内容。同样,我不确定上下文(我传入null 的位置)是否重要。你可以试试$ 代替null
    • 另外,我如何获得承诺对象?如果我将每个 ajax 调用包装到一个数组中,我会得到所有的 ajax 对象,但它们不会执行......
    • var promise = $.ajax({ ... }); arr.push(promise);
    • 哇,这是使用 apply 的好方法。我虽然 apply 只是为了定义一个函数的上下文。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多