-
220914 TIL하루 30분 TIL 2022. 9. 15. 01:07
Facts(사실/ 객관)
1. 디자인 시스템에 대해 논의함
2. 팝업관리 기획/디자인 세션을 가졌다.
3. 팝업관리의 경우 기획 변경사항이 생겨 보류됐다.
4. 관리도구 코드를 보고 있는데 플랫폼 코드구조와 많이 달라 살펴보고 있는 중이다.
Findings(배운점)
1. 어렴풋이 알고 있던 == 와 === 차이에 대해서 배웠다.
== 연산자는 두 피연산자의 타입이 다를 경우 자동으로 일부 피연산자의 타입을 변환 후 값을 비교한다.
- 1) 10 == '10'
하나가 숫자형이고 다른 하나가 문자열이면 문자열을 숫자로 변환 후 값을 비교 - 2) true == 1
불리언 값이 존재하면, 불리언 값을 1로 변환후 값을 비교
3) true === '1'
불리언 값은 1로 변환되고 그럼 1번과 같은 로직으로 1 == 1로 비교
4) true == 'true'
true는 1로 변환되지만 문자열 'true'는 숫자로 변환 불가
=== 연산자는 타입을 변환하지 않으므로 엄격한 방식이다.
2. forEach 함수는 비동기(async) 함수를 기다려주지 않는다는 걸 알게 되었다.
그렇다면 순차 진행을 원할때는 어떻게 할까?
1) for ofgenres = []; for (const value of wantedGenres) { const g = await Genre.findOne({ name: value }); genres.push(g); }순차적으로 진행할 수 있지만 forEach와 달리 병렬로 처리되지 않으므로 소요시간이 오래 걸림
2) Promise.all
let genres = []; const promises = wantedGenres.map(async (value, index) => { const g = await Genre.findOne({ name: value }); genres.push(g); }); await Promise.all(promises);순차적으로 진행하되 위와 같이 병렬로 처리도 가능하다
각 비동기 함수들을 promises 배열에 저장 후 Promise.all을 사용해 모든 비동기 함수를 동시에 실행할 수 있다.
3. entries를 활용해 for of에도 index 접근 가능하다genres = []; // entries()는 인덱스/키 쌍의 새로운 배열을 반환한다 for (const [index, value] of wantedGenres.entries()) { const g = await Genre.findOne({ name: value }); genres.push(g); }'하루 30분 TIL' 카테고리의 다른 글
220921 TIL (0) 2022.09.21 220915 TIL (0) 2022.09.15 7월 21일 회고(sitemap.xml,robot.txt, getLayout) (0) 2022.07.22 22.07.14 회고(Next SEO) (0) 2022.07.15 22.07.12 회고 (0) 2022.07.13 - 1) 10 == '10'