그래서 이것은 내 설정입니다. 여러 요소에서 .each를 호출하고 몇 가지 검사를 한 후 일부 JSON 데이터와 함께 아약스 요청을 보내고 성공하면 특성으로 서버 응답을 적용합니다 각 요소 (보통 id 임)에. 그 후 ID를 배열로 푸시합니다.여러 개의 각 및 아약스 요청
문제는 분명히 ajax 요청은 비동기 적이며 모든 Ajax가 완료되기 전에 요소 ID 배열을 사용하는 함수가 실행된다는 것입니다.
나는 .when과 .then를 시도했지만 콜백 함수가 계속 ajax보다 먼저 해고된다. 여기
(나는 불필요한 부분을 제거 한) 내 코드는 모습입니다 :
var order = [];
function sub(selector){
selector.each(function(){
var out = {
"some":"random",
"stuff":"here"
};
$.ajax({
type: "POST"
url: "/test/url",
dataType: 'json',
contentType: "application/json; charset=utf-8",
data:JSON.stringify(out),
success:function(response){
$(this).attr("data-response",response);
order.push(response);
}
})
})
}
$("#button").click(function(){
$.when(sub($(".test"))).then(function() {
console.log(order);
//i have to run the sub function twice so the order doesn't return undefined
});
});
당신이 순서 배열에 항목을 이용하여 수를 계속 확인 할 수 있습니다. setInterval을 사용하여 – bitkot