일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- CI/CD
- 무한 스크롤
- app router
- 태그된 유니온
- 반공변성
- 이분 검색
- Jest
- map
- dfs
- async/await
- 공변성
- RTK Query
- 인터섹션
- 호이스팅
- webpack
- 타입 좁히기
- tailwind
- 리터럴 타입
- ESlint
- CORS
- 투포인터
- useAppDispatch
- Cypress
- SSR
- 결정 알고리즘
- autosize
- Promise
- React
- TS
- recoil
- Today
- Total
목록비동기 (2)
짧은코딩

비동기 비동기는 동시에 돌아가는 것이 아니다! 순서의 문제이다. 동기 코드 동기 코드는 "위 -> 아래", "왼쪽 -> 오른쪽"으로 실행 따라서 예측이 쉽다 비동기 코드 보이는 코드대로 실행되지 않음 다만 정해진 순서는 있다 한 번 비동기는 영원한 비동기 async/await, promise 등을 써도 동기로 만들 수 없다. 비동기를 동기로 바꾸려는 노력을 하지 말자 비동기 코드 분석 setTimeout(() => { console.log("a"); }, 0); setTimeout(() => { console.log("b"); }, 1000); setTimeout(() => { console.log("c"); }, 2000); (아래 글은 정확한 JS 스펙은 아니지만 99% 맞다, 스펙을 다 공부하려면 ..

간단한 것은 thunk로 구현할 수 있지만 복잡한 것은 saga로 구현하는 것이 좋다. thunkMiddleware // thunkMiddleware는 아래 코드가 끝이라서 불러올 가치가 없다 // 기본적으로 action은 객체 const thunkMiddleware = (store) => (next) => (action) => { //비동기는 함수로 넣어주겠다는 약속 if (typeof action === "function") { return action(store.dispatch, store.getStats); } // 동기 return next(action); }; thunkMiddleware을 만들고 enhancer에 넣어준다. 동기는 기본적으로 객체로 받고, 비동기는 함수로 받는 것이 약속이다...