ComputerScience/JavaScript 3

[JavaScript] Throttle

이 개념도 책(Do it 리액트 프로그래밍 정석)에서 본 내용인데 Throttle이란 개념은 Debounce(include-note.tistory.com/entry/JavaScript-Debounce)와 유사하지만 입력되는 동안 이전에 요청했던 작업들이 주기적으로 실행된다는 점이 다르다. Throttle의 경우 명령이 동작하고 있는 도중에 새 명령이 들어오는 경우 새 명령을 무시하도록 구현하면 된다. 이 개념이 주로 사용되는 App은 Facebook이다. Facebook의 경우 아래로 스크롤될 때 스크롤되는 동안 새로운 페이지가 계속해서 로드되는 것을 볼 수 있다. 만약 Throttle이 아닌 Debounce라는 개념이 적용되었다면 스크롤이 멈추기 전까지는 새로운 페이지가 로드되지 않는 문제가 발생할 수..

[JavaScript] Debounce

책(Do it 리액트 프로그래밍 정석)에서 보기 전에는 이런 개념이 있다는 것도 모르고 살았었는데... Debounce란 어떤 내용을 입력하다가 특정 시간동안 대기하고 있으면 마지막에 입력된 내용을 바탕으로 서버에 요청하는 방법이라고 하는데... 이 개념은 굳이 대상이 서버가 아니더라도 활용이 가능할 거 같다. 예를 들어, App에서 Data검색 쿼리를 날리는 경우에도 같은 방식을 적용할수 있을 거 같다. 검색 쿼리에 Debounce 개념이 적용되면 대용량의 DB를 실시간으로 검색하는 구조를 가진 앱의 경우 쿼리가 앱에 주는 부하를 축소시킬 수 있다는 생각이 든다. 아무튼 책에 나온 예시는 JavaScript이니 JavaScript형식의 코드를 공유하자면 아래와 같다. 조금만 변형하면 다른 환경에서도 적..

[JavaScript] Promise

JavaScript로 비동기 프로그래밍을 할 때 JavaScript가 함수형 언어이기 때문에 발생하는 현상인 콜백 지옥이란 게 있다.. work1 함수 끝나고 work2 함수가 불렸으면 좋겠고 work2 함수가 끝나고 나면 work3을 불렀으면 좋겠고.. 이런 요구사항이 발생할때 function work1(onDone) { setTimeout(() => onDone("work 1 done"), 100); } function work2(onDone) { setTimeout(() => onDone("work 2 done"), 200); } function work3(onDone) { setTimeout(() => onDone("work 3 done"), 300); } work1(function (msg1) ..