[JavaScript]비동기 작업 수행하는 코드 뜯기
아래 코드는 unbookClub 프로젝트를 진행하면서 API 도서검색 기능구현을 하며 사용한 코드다.
onClick 함수로 아래의 아래의 코드와 연결시켰다.
기능 목록
event.preventDeafault(); => 새로고침 방지
setSearchError(null); => 검색 오류를 나타내는 상태 변수를 초기화.(useState 리액트 내장함수 사용)
startLoading(); => customHook(contextAPI와 함께 사용함) 으로써 로딩 이미지를 보여주는 커스텀훅 호출
async { ... } await(error) { ... } => async 키워드는 함수를 비동기 함수로 선언.
이는 함수 내에서 await 키워드를 사용할 수 있게 하고, 함수가 항상 Promise를 반환.
async 함수 안에서 await 키워드를 사용하면 해당 표현식의 비동기 작업이 완료될 때까지 함수의 실행을 일시 중단한다.
함수의 실행을 일시 중단
조건문 바깥부터 해석
if (params.query) { ... } else { ... } =>검색에 필요한 파라미터를 설정하는 함수
try { ... } catch (error) { ... } => JavaScript에서 예외처리를 위해 사용되는 키워드 (finally)도 추가될수 있다.
try : kakaoSearch(params);를 호출하여 검색을 시도하고,
성공 시 검색 결과를 data로 받아옴. 예외가 발생하면 catch 블록으로 이동하여 에러를 처리.
해당 데이터는 searchResults라는 변수로 저장됨.
이는 나중에 UI에서 검색 결과를 표시하는 데 사용됨.
*finally 블록을 추가 할 수 있다 (예외처리에 관계없이 실행되는 코드)*
stopLoading(); => 로딩 상태를 종료하는 커스텀 훅을 호출
비동기 호출 관련 도움많이 된 블로그 글!
[기술면접] 비동기 호출 callback, promise, async/await의 특징과 차이점
다른 함수가 실행을 끝낸 뒤 실행되는 함수를 말한다.즉, 코드를 통해 명시적으로 호출하는 함수가 아니라 함수를 등록해놓은 후 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에
velog.io
https://velog.io/@cyranocoding/2019-08-02-1808-%EC%9E%91%EC%84%B1%EB%90%A8-5hjytwqpqj
JavaScript 비동기 처리를 위한 promise 이해하기
배경지식 JavaScript는 엔진은 Single Thread이다. 그래서 동시에 두 가지 작업을 할 수 없다. 그렇다면 여러 작업이 동시에 요청이 될 때 이 전 작업이 마무리 될 때까지 기다려야 하는가? 그렇다. 그래
velog.io