【发布时间】:2016-08-16 06:15:41
【问题描述】:
我正在尝试构建一个 ajax 请求列表以输入 $.when() 方法,这样我就可以在所有请求完成后做一些事情(例如这个答案:https://stackoverflow.com/a/24050887/1952996)。
我想出了这个代码 (jsfiddle):
function getUserData(username){
return $.ajax({
url:"/echo/json/",
data:{json: $.toJSON({"username": username}),
delay: 3},
type:"POST",
success:function(response)
{
console.log(response);
}
});}
var userList = ["userA", "userB"];
var userRequests = [];
userList.forEach(function(u){
userRequests.push(getUserData(u));
})
当我运行它时,我看到数据被记录在控制台中。这是为什么?我认为我构建 ajax 请求的方式是返回 ajax 延迟对象。然后我尝试将这些对象存储在 userRequests 中。但是这些不应该被调用。我错过了什么?
【问题讨论】:
-
getUserData(u)将调用ajax-call并返回deferred-object可以使用then/done处理程序访问数据... -
所以,我显然不知道发生了什么。但你的评论为我提供了一个重要的信息。 ajax 调用立即在
getUserData(u)上进行,成功函数的任何副作用都将在该请求完成后发生。
标签: javascript jquery ajax