不久前,一个 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/