본문 바로가기
반응형

javascript7

[JS] async와 await javascript로 코드를 짜다보면 비동기는 빠질 수 없는 개념입니다. 만약 비동기로 작성하지않는다면?.... 위에 사진처럼 콜백 지옥에 빠지게 됩니다.. 하하..... 코드의 가독성도 저하되고, 문제점을 바로 찾을 수가 없습니다. 이를 해결하기 위해 async와 await를 사용하는 방법과 개념을 정리해보려고 합니다. 1.async async는 function 키워드 앞에 위치하게 됩니다. async function test() { return 1; } function 앞에 async를 붙이면 해당 함수는 항상 프라미스를 반환합니다. 프라미스가 아닌 값을 반환하더라도 이행 상태의 프라미스(resolved promise)로 값을 감싸 이행된 프라미스가 반환되도록 합니다. async function te.. 2021. 9. 11.
에라토스테네스의 체 프로그래머스 소수찾기 문제를 풀면서 예전에 사용해보았던 에라토스테네스의 체라는 알고리즘을 다시 한 번 사용해보았습니다. 에라토스테네스의 체를 그림으로 한번 살펴볼까요? 이런 식으로 2의 배수부터 지워나가 3의 배수, 4의 배수... 증가시켜 제거하는 방법입니다. 코드 리뷰를 통해서 확인해보겠습니다. function solution(n) { let arr = Array(n+1).fill(true).fill(false,0,2); //n의 숫자의 크기만큼 array를 할당해주고 true로 채워줍니다. 0,1은 소수가 아니기 때문에 제외해줍니다. for(let i =2; i*i 2021. 9. 2.
[JS] ES6 화살표 함수와 기본 함수의 차이점을 알아보자 ES6문법 중에 화살표 함수 기능이 추가되었습니다. 숫자 두 개를 받아서 더하는 함수를 만들어 설명해보겠습니다. //ES5 let add = function(a,b){ return a+b; } function add(a,b) { return a+b; } //ES6 let add = (a,b) =>{ return a+b; } 기본 함수에 비해 화살표 함수가 조금 더 간결하게 보입니다. 그럼 "기본 함수를 쓰는 것보다 화살표 함수를 쓰는 게 간결하고 보기가 편하니까 모두 화살표 함수를 쓰자"라고 하실 수 있겠지만, 큰 차이점이 있습니다. 바로 this입니다. 화살표 함수는 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정됩니다. 함수 내부에서 this를 생성하지 않고 this를 사용하면 외부 함수 .. 2021. 8. 30.
[프로그래머스] 숫자 문자열과 영단어 (2021 카카오 채용연계형 인턴십) 알고리즘 문제를 천천히 하나하나 풀어보고 있습니다. 문자열을 다루는 문제 중에 괜찮아 보여서 풀어보았습니다. 문제 설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같.. 2021. 8. 28.
[JavaScript] for in, for of , for, while 성능비교하고 서비스의 Duration을 줄여보자! 회사에서 유저에게 제공될 예약목록을 보여주는 기능을 구현하고 있습니다. 예약 건수가 별로 안되는데 timeout이 생기는 일이 종 종 생겨 Duration을 줄이기 위해 코드를 뜯어고쳐보고 있습니다. 최대한 쿼리 하는 부분을 줄였는데도 Duration을 잡을 수가 없었습니다.. 그래서 근본적인 로직을 다시 한번 분석해보기로 했습니다. 컴파일 비교는 [https://jsben.ch/BQhED] 여기서 확인했습니다. var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,15,16,17,18,23,123,12,31,23,123,123]; var newVar; 이 코드를 통해 진행해보았습니다. (배열 하나를 생성하여 확인해보았습니다.) 성능은 확실히 기본적인 for.. 2021. 6. 5.
[mongoDB, JavaScript] 시간복잡도를 줄여보자! join이 안된다고?? 회사에서 기존 서비스 기능들을 기능 개선을 하고 있다. mongoDB를 사용하는데 단점이…. join이 안된다…. ㅠㅠ 예를 들어 a class가 있는데 이 class에서 하나의 필드가 포인터로 b class의 기본키나 다른 키를 가리키고 있다고 하면 mysql이나 다른 곳에는 join기능이 있어 한번 쿼리로 b class의 객체까지 담아서 가져올 수 있지만 mongoDB에서는 그게 안된다… 그렇다면 어떻게 해야 할까? 어쩔 수 없다! 쿼리를 두 번해서 join을 직접 코드로 넣어줘야 한다! 두 번 쿼리 하는 거는 Promise chaining을 해서 비동기로 가져오면 된다.(이 것도 나중에 시간이 되면 정리해야겠다.) ex) aList = [ { _id: "dasdas", name: "name$asld.. 2021. 6. 2.
[JS] promise 비동기처리 프로미스는 비동기 작업의 최종 성공 값 또는 실패 이유와 연결할 수 있다. 이를 통해 비동기 메서드는 동기 메서드와 같은 값을 반환할 수 있다. 즉, 최종 값을 즉시 반환하는 대신 비동기 메서드는 미래의 특정 시점에 값을 제공 하겠다는 약속을반환한다. js에서 비동기를 처리할 때 자주 사용한다. 콜백 지옥에서 유일한 탈출구랄까.... 아무튼 내가 회사에서 사용해보면서 간략하게 이해한 개념들을 정리해보려고 한다. promise는 3가지의 상태로 있다. pending(초기), fulfilled(성공), rejected(실패)로 되어있다. 두 개 이상을 비동기 병렬로 처리하는 방법을 보자.! (한 개 처리하는 건 다른 블로그에도 많으니까!) 한번 코드를 살펴보자. 이러한 코드가 있다고 해보자!!(그냥 방금 대.. 2021. 4. 26.
반응형