본문 바로가기
프로젝트

jquery

by wannabe 2021. 7. 30.

setTimeout

 

https://webisfree.com/2014-04-08/[javascript]-%EC%8B%9C%EA%B0%84-%EC%A7%80%EC%97%B0-%ED%95%A8%EC%88%98-%EC%9D%BC%EC%A0%95-%EC%8B%9C%EA%B0%84-%EB%92%A4-%EC%8B%A4%ED%96%89%EC%8B%9C%ED%82%A4%EA%B8%B0-settimeout()-%7B%7D 

 

[JavaScript] 시간 지연 함수, 일정 시간 뒤 실행시키기, setTimeout() {}

자바스크립트 함수중에서 자주 사용되는 타이머 함수가 있습니다. 바로 setTimeout()이죠! 아래는 어떻게 동작하고 사용하는지 자세히 알아보고자 합니다.

webisfree.com

위에처럼 람다식 표현을 사용하는 이유는?? this를 바인딩하려고!!!

 

스레드는 언어가 3들고있는게 아니라,,, OS가 들고있는거다!!! 

그래서 자바스크립트에서 여러개의 스레드를 만들수 있기는하다

그러나! 자바스크립트는 싱글스레드를 지향하고 비동기처리를 한다. 

위에 코드가 어떻게 실행될까???

 

자바는 스레드가 2개이면 문맥교환이 일어나서 느려진다

자바스크립트는 문맥교환을 안한다. 무거운 작업을 스케줄러 같은 메모리 영역 즉 이벤트 루프에 등록을 해놓는다. 

1번 실행, 3번 실행, 이제 메인스택이 종료되었으니,,, 다음으로 이벤트 루프에 등록해놓은 2번 작업으로 가서 끝났는지 확인한다. 2번 끝나면? 가지고 와서 실행한다 

 

 

위와 같이하면? for문이 100초라고하면? 메인스택에 있는 100초 작업 끝날때까지 이벤트루프에 등록된 console.log(코드2)는 실행되지 못한다. 즉, 3초뒤에 실행하라고 했는데 그렇게 작업을 못하게 된다.

이걸 해결하려면???for문을 setTImeout안에 넣어서 이벤트 루프에 등록한다. 

이벤트루프에 등록해놓은 애들로 인해 비동기적 실행이 된다!!!!!!! 

 

이렇게하면?? 

1번실행, 2번 빼두고, 3번 실행, 4번 실행된다. 그런데 2번에서 num에 우선 null이 들어가있고 

fetch함수의 결과를 메인스레드 num이 받아올수 없다!!!!!! 여기서 문제발생

이걸해결하려고 await걸면??? 메인스레드가 block당해서 멈추고 실행될때까지 동기적 실행된다

위에 코드를 비동기적 실행하려면???

비동기프로그램 짜는건 쉽지만!! 결과값을 받아오는게 어려워서 코드 짜는게 중요하다!!!!!

 

무거운 작업이 있다면??? 예를들어, 0.5초 걸리는 작업! 0.5초도 무거운 작업이다

 

 

http://192.168.56.1:8000/download

 

가운데 박스에 대해서 통신으로 값받아서 그릴거다!!

 

 

ajax가 뭐예요????

a는 비동기

비동기 통신을 json으로 한다. 

xml이라는 객체를 쓰긴하지만 그건 그때 만들어져서

우리는 string으로 통신했다. 문자열로 통신!! 이제 json으로도 통신할거다

 

promise가 뭐에요? 

통신에 대한 어음같은거! 어음을 나중에 돌려주는거

 

오버로딩 해봤나요?? 단점이 뭐예요??? 

경우의 수가 너무 많다. 해결은?? 상속해서 일치시킨다. 

 

'프로젝트' 카테고리의 다른 글

프로젝트 진행 참고사이트  (0) 2021.08.09
결제  (0) 2021.08.03
프로젝트 일지 - git 프로젝트 공유  (0) 2021.07.28
공공데이터 활용  (0) 2021.07.28
이미지 업로드  (0) 2021.07.28