Promise를 알려면 비동기처리를 알아야한다.
비동기방식은 전 글에서 ajax에서 간단하게 살펴봤었는데 정리 한 번 더 해보려고한다. 비동기처리를 할 때 Promise를 사용한다고 한다.
진짜 하나 몰라서 찾아보면 줄줄이 소세지마냥 모르는 것과 혼돈되는 것들이 나와서 이렇게 글이 길어지는 것같다.
비동기 처리는 쉽게 말해서 앞서 처리되고 있는 연산이 끝나고 다음 연산이 진행되는 것이 아니라 동시에 연산이 처리하는 방식을 말한다.
비동기와 반대인 동기 처리를 보면서 비동기가 뭔지 이해해보자.
// #1
console.log('Hello');
// #2
setTimeout(function() {
console.log('Bye');
}, 3000);
// #3
console.log('Hello Again');
Web API는 타이머, 네트워크 요청, 파일 입출력, 이벤트 처리 등 브라우저에서 제공하는 다양한 API를 포괄하는 API의 총칭이다. 브라우저마다 다르겠지만, 크롬 브라우저 일 경우 Web API는 멀티 스레드로 구현되어 있다.
아 그래서 멀티 스레드라서 비동기라는건가? 정답은 노우
멀티스레드, 싱글 스레드, 비동기, 동기 모두 다 다른 말이다.
어떤 일을 같이하는 것 같아보이는 건 비슷하지만 다르다.
스레드부터 차근차근 알아보자.
아래 사진을 보면 좀 더 이해하기 쉬울 거다.
난 멀티 스레드 - 비동기 표현을 보고 예? 했는데,
하나의 Task를 여러 개로 나눠 여러 쓰레드에 넣은 거라고 생각했다.
상황에 따라 장단점이 있어서 상황에 맞게 사용하면 되겠다.
Promise를 보려다가 여기까지 와버렸다. 다시 Promise로 돌아가자.
읽어본 글
https://inpa.tistory.com/entry/%F0%9F%8C%90-js-async
https://joshua1988.github.io/web-development/javascript/javascript-asynchronous-operation/
https://velog.io/@eassy/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%B2%98%EB%A6%AC
https://kingsman5.tistory.com/23