안녕하세요.선생님 질문이 생겨서 글남깁니다.
201
작성한 질문수 12
안녕하세요. 선생님. 제가 궁금한점이 생겨서 글남김니다.
현재 작업중인 코드가 있는데 for문안에 Aajax를 두번 사용하고 있습니다.
for문안에 var를 사용해서 ajax에서 사용하니 끝값을 갖게되어 전송이 제대로 안되어 고민 하던 차에 선생님 강의를 듣고
영감을 얻어 let을 사용하여 해결 하였습니다.
문제는 크롬에서는 잘되는데 익스플로러를 사용 할때는 for문안에서 let에 문제가 있다고 들었는데요..
익스플로러에서도 사용할수 있도록 다른 방법이 있을까요?
var를 사용하면서 끝수가 아닌 순차적으로 할수 있는 방법이 있을까요?
for(var j=0; j < result.length; j++){
let formData = new FormData();
let errData = null;
let Key1 = null;
let Key2 = null;
let pdf = null;
(function(j) {
var getToken = function(){
return new Promise(function(resolve, reject){
//토큰을 얻어오기 위한 ajax
jQuery.ajax({
url: ""
,type:"POST"
,contentType :"application/json"
,data: JSON.stringify({""})
,success : function(res){
var token;
token = res["token"];
key1 = result[j]["Key1"]
Key2 = result[j]["key2"]
pdf = result[j]["pdf"];
formData.append("key1", key1);
formData.append("Key2", Key2);
formData.append("pdf", pdf);
return resolve(token);
},error : function(err){
}
})
});
}
getToken().then(function(res){
//토큰을 얻고 데이터를 보내주는 ajax
jQuery.ajax({
url: ""
,type:"POST"
,data : formData
,processData : false
,contentType : false
,success : function(result){
},error : function(err){
}
});
});
})(j);
}
답변 1
1
XMLHttpRequest는 비동기 처리이므로 처리 순서를 보장하지 않습니다. 왜냐하면 서버에서 처리하는 것에 따라 달라지기 때문입니다. 예를 들어 1번 통신이 서버에서 10초가 걸리고, 2번 통신이 서버에서 1초가 걸린다면 2번 통신이 먼저 끝납니다.
처리 순서를 보장하려면 Promise를 사용하고 있으니 async, await를 사용하면 됩니다. 이것은 비동기이지만 1번 통신이 끝나야 2번을 통신합니다. 또한 Promise.all()이 있는데 이것은 1번과 2번 통신이 모두 끝났을 때 then()이 실행됩니다. 처리하려는 것에 맞추어 방법을 선택하면 될 것입니다.
prototype의 메소드 내부에 화살표 함수가 작성된 경우
1
229
0
let 변수 호이스팅
0
381
1
[정리시간]부족하지만...
3
238
0
[제네레이터함수, yield를 활용한 무한 덧셈] 식, result += yield result를 어떻게 이해 해야할까요???
0
408
1
자바스크립트도 컴파일을 하나요?
0
626
1
틀린부분 질문드립니다
0
304
1
clear() 메소드 관련 질문
0
250
0
실행 시점
0
162
0
yield에 대해 질문이 있습니다.
0
302
2
window 오브젝트에서의 함수표현식 호출
0
279
1
Unicode 관련 정리
2
226
1
화살표 함수의 this 의 정적 스코프 참조 부분 질문드립니다.
0
205
1
선생님께서 ES5 심화과정에서 알려주신 event 처리 방법 나이스입니다!
1
214
1
안녕하세요.선생님 질문 있습니다.
1
262
2
Array.from()이랑 Array.of()랑 설명이 뒤바뀐 것 같아요..
0
177
1
Arrow Function 에서 Scope 관련 질문이 있습니다.
1
298
5
setPrototypeOf() 는 정의에 대해 헷갈린 점 질문 드립니다.
5
234
1
[강의자입니다] 브라우저 디버거 창의 오른쪽에 let, const 변수 표시
5
289
0
디버깅 맨 처음부터 Script에 globalLet이 설정되어있습니다.
1
243
1
강의 pdf 파일 공개 부탁드립니다
0
170
1
아 전역에 let을 선언해도 순서대로 읽는군요;;
2
240
1
Symbol.species 질문입니다.
0
420
1
글의 정리가 안되어있어 삭제했습니다.
0
162
1
DevTools > Sources 에서 Block을 볼 수 없어요!
0
277
4





