TIL 20210315

uoM·2021년 3월 15일
0

오늘

  • 비동기 처리
  • 알고리즘

지금

알고리즘

바이너리 서치(bianry search)를 통한 숫자의 인덱스를 찾는 방식이었다.
다만 배열의 순서가 가운데서 시작되는 순환 고리 형태였다.

그래서 가장 큰 숫자의 위치를 찾아서 바이너리 서치를 진행하는 방식을 택했는데,
효율성 검사에서 스택이 터졌다.

문제의 원인은 인덱스 검사 과정에서 스택이 터지는 것으로 생각된다.
Math, indexOf와 같은 처리가 3000번이상 호출되게 되면서 생기는 문제인것

결국 index체크하는 과정 없이 중간과 마지막 데이터의 순차정렬 상태를 체크해서 결과를 출력하도록 변경했다.

비동기 처리

  • Promise
    JS 비동기 처리의 핵심.
    객체를 생성하는 방식으로 비동기 처리를 조작할 수 있다.
let promise = new Promise()

프로미스의 인자로는 콜백함수가 들어온다.
콜백에 인자로는 resolve, reject 두 개의 콜백이 전달되며,

resolve는 원하는 상태로완료되었음을 나타내고
reject는 원하는 결과는 아니지만 어떠한 이유로 완료 되었는지를 반환한다.

  • async / await
    async는 함수를 Promise 객체로 변환하며, await키워드가 안쪽에 없는경우 syncronous처리와 같이 함수를 순차적으로 실행한다.
    그리고 그 결과를 Promise의 fullFill로 반환한다.

await키워드가 있는경우에는, 해당 promise 객체의 완료 결과를 받아와야 다음 코드라인을 실행한다.
promise가 reject되는 경우에는 변수에 해당 결과를 담거나 선언하는 것이 불가능하다.

내일

  • promise & async/await
  • 알고리즘

0개의 댓글