history.back / history.go / 이벤트 루프

Feb 21, 2024
history.back / history.go / 이벤트 루프

1. history.back을 사용하는 이유?

history.back을 사용하면 사용자 ux가 좋아짐 alert로 권한 없다고 띄운 다음, history.back으로 (마치 redirect처럼) 돌린다. (이전 페이지로 이동!)

[ history.back ]

JavaScript에서 사용되는 함수로, 브라우저의 이전 페이지로 이동하는 기능을 수행 이 함수를 호출하면 현재 페이지의 이전 페이지로 돌아간다

[ history.go ]

JavaScript에서 사용되는 함수로, 지정된 페이지로 이동하는 기능을 수행 인자로는 이동할 페이지의 상대적인 위치를 나타내는 정수 값을 받는다. 양수 값을 전달하면 앞으로, 음수 값을 전달하면 뒤로 이동. 예를 들어, history.go(-1)은 이전 페이지로 이동하고, history.go(1)은 다음 페이지로 이동 history.go(-2)는 두 페이지 이전으로 이동하는 것을 의미

즉,

history.back()은 단순히 이전 페이지로 이동하는 것이므로, history.go(-1)과 동일한 결과를 보인다. 그러나 history.go() 함수는 상대적인 위치를 지정하여 이동할 수 있기 때문에 좀 더 유연한 페이지 이동이 가능하다.

[ setTimeout ] → JavaScript에서 비동기적인 작업을 스케줄링하는 함수

스레드 슬립이랑 비슷하다. JavaScript에서는 단일 스레드 이벤트 루프를 사용하여 비동기 작업을 처리 이벤트 루프는 이벤트 큐에 등록된 작업들을 순차적으로 처리하는 역할 setTimeout → 이벤트 루프에 넣는다. 내가 해야할 약속같은 것들을 이벤트 루프에 다 등록한다.
💡
모든 이벤트는 이벤트 루프에 들어간다! (할 일 없을 때 실행하기 위함)
💡
프로미스 → 안 할 일 없나? 하고 찾는 것. (반드시 실행시켜 줌)
 

[ 이벤트 루프 개념 ]

[ 자바 ] 주문이 들어오면 자바는 커피 만드는 스레드, 주문 받는 스레드를 따로 만든다. 스레드 2개가 동시에 도는 것. (컨텍스트 스위칭) 3초씩 왔다갔다왔다갔다왔다갔다... 진짜 빠르게 왔다갔다 해서 ux는 좋다. [ 자바 스크립트 ] 주문이 들어오면 메인 스레드, 즉 오래 걸리는 커피 만드는 일들은 메모장에 적어 놓는다. 계속 적는다. 1번 손님 아아, 2번 손님 카푸치노, 3번 손님 스무디 등등 손님을 다 받은 후, 내가 할 일이 없을 때 커피를 만들러 가는 것 -> 웨이트(노는 시간)이 없어서 퍼포먼스가 좋음. 리퀘스트가 100개가 들어오면 일단 다 받고 이벤트 루프에 전부 등록해놓는다. 0.1초라도 틈이 나면 그 사이에 다 처리하는 것 문맥 교환이 없어서 자바 스크립트가 더 빠름!!
💡
단일 스레드가 웹에 가장 최적화 되어있음! 톰캣은 단일 스레드, 멀티 스레드 둘 다 제공. 지금 우리는 멀티 스레드 공부 중!
단일 스레드 - 이벤트 루프 기법. 웹에서는 단일 스레드가 훨씬!! 빠르다!!
 
Share article

codingb