자바스크립트로 코딩을 하다보면 순서가 내가 원하는데로 되지 않는다.
구글링해서 동기 코드로 작성해도, 어떤 개발에서는 동기 순서도 정상적으로 되지 않는다.
즉, 코드에 따라서 동기식으로 작성하더라도 제어가 맘대로 안될 때가 생긴다.
자바 스크립트의 콜 스택(Call Stack), 테스트 큐(Task Queue), 이벤트 루프(Event Loop) 동작 순서 원리와 관련있는데...(Task Queue에 쌓인거는 어쨋든 Call Stack으로 옮겨져 나중에 실행됨)
보통 setTimeout과 같은 콜백함수를 쓸때 순서가 맘데로 제어가 안되는 일이 생긴다.
더군다나 Promise를 사용할 수 없는 구닥다리 시스템을 사용 중일때는 문제가 심각해진다.
여기서는 자세히 설명하지 않고 이런거 상관없이 제어하는 코드를 적어둔다.
콜백의 원리를 이용한 것인데, 어디서나 콜백을 쓰면 컨트롤이 자유롭다.
요즘 뷰(VUE)니 리액트(REACT)니... 코드가 중구난방인 프론트 세상에서 이게 제일 간단한것 같다..
1. 콜백 함수
var timer = 1000;
function fn_main(callback){
// 타이머와 상관없는 코드 실행
setTimeout(function(){
// 콜백 첫번째 실행
callback();
}, timer);
}
function fn_sub(){
// 콜백 두번째 실행
}
2. 콜백 함수 실행
fn_main(function(){
fn_sub();
});
이렇게 코드를 작성하면 동기식과 같은 방향으로 코드가 실행될 것이다.
ajax나 submit 할때도 이런 방식으로 작성하면 원하는 동기식으로도 작성할 수 있겠다..
'Stack Overflow > 스프링' 카테고리의 다른 글
[스프링]Don't know how to iterate over supplied "items" in <forEach> 오류 원인 및 해결방법 (285) | 2022.03.25 |
---|---|
[스프링] JSTL 특정 날짜 이후에 페이지 내용 변경하기 (4) | 2022.03.22 |
[스프링] 레거시파일 - 크롬에서 파일 다운로드 시 jsp 확장자 파일이 내려받아지는 경우 (254) | 2022.02.25 |
[스프링] URL 호출했는데 HTTP Status 405 에러가 발생되는 경우 수정 및 해결방법 (350) | 2022.02.24 |
[스프링] Spring REST API 데이터 JSON 송수신 가능하도록 간단하게 구현, 생성하기 (추가로 LIST 작업) (6) | 2022.02.23 |
댓글