$.when()
メソッドにフィードされるAjaxリクエストのリストを作成しようとしているので、すべてのリクエストが完了したら何かできます答えは、例: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'を起動すると、'繰延オブジェクトを返しますが'データは' then/done'ハンドラを使ってアクセスすることができました... – Rayon
どうしたのか分かりませんでした。しかし、あなたのコメントは、私に重要な情報を提供します。 ajax呼び出しは 'getUserData(u)'で直ちに行われ、その要求が完了した後にsuccess関数の副作用が発生します。 – zelite