javascript - $.when、apply() 和 $.done() 在此函数中如何交互?

标签 javascript jquery ajax jquery-deferred

不久前,一个 SO 用户为我编写了这个函数来返回可变数量的 jQuery $.get() 请求。第一部分非常简单,但有人会解释一下 $.when()apply()$.done() 是如何工作的吗互动。我一般不了解,但非常具体地了解他们如何访问 $.get() 返回的延迟对象。

function getHTML(qty_of_gets) {

   var dfdArr = [],
       i = 1;

   while (i <= qty_of_gets) {
       dfdArr.push($.get("get_test_" + i + ".php"));
       i++;
   }

   $.when.apply(null, dfdArr).done(function () {

       for (var i = 0; i < arguments.length; i++) {

           $("#content").append(arguments[i][0]);

       }

   });
}

最佳答案

$.when 返回一个新的 promise ,所以 $.when().done() 只是在返回的 promise 上调用 .done通过 $.when

.apply允许您使用数组中的参数调用函数,而不是单独传递它们。所以

$.when.apply(null, dfdArr)

(几乎*)等同于

$.when(dfdArr[0], dfdArr[1], dfdArr[2], ...);

dfdArr 中的每个元素都是一个 promise 。


*函数内部this的值除外。

关于javascript - $.when、apply() 和 $.done() 在此函数中如何交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565985/

相关文章:

javascript - 如果用户在模态框外单击,我如何防止模态框(使用 Bulma CSS 框架)关闭?

c# - 将 PageMethods 与 jQuery 一起使用

javascript - iPad 的 Safari 上的 Firebase;找不到变量 : Notification

javascript - 用于添加/删除行的 jquery 实时函数

jquery - Toggle 类触发但没有发生任何更改

javascript - Jquery Ajax 调用 java rest api 成功函数未触发

c# - 异步发布此数据以及取消/排队新请求的正确方法是什么?

php - 我如何对这个 ajax php 脚本进行排序

javascript - d3.js 气泡图中的中心图像

javascript - 将 Javascript 变量发送到文件中 PHP 的函数参数中?