HANA -J

TIL - 2021/11/13 본문

what I Learnd/TIL

TIL - 2021/11/13

Hana-J 2021. 11. 13. 20:23

>자바스크립트 정리 1편

 

1. 함수의 호출스택

  - Anonymous는 가상의 전역컨택스트로(함수의 호출이 있기전에 항상 있다고 생각하면 된다.)

  - 함수호출 순으로 쌓이고 역순으로 실행한다.

  - 함수 실행이 완료되면 스택에서 빠진다.

  - LIFO구조라서 스택이라 부른다.(호출스택,,)

 

2. 이벤트 루프

  - 호출스택과 백그라운드, 데스크큐로 기능이 실행되는 순서 자체를 이벤트 루프라고 부른다.

      1. 호출 스택에 실행할 함수가 쌓임

      2. 여기서 실행되는 함수가 비동기함수이면 백그라운드로 이동하게 된다.

       ( 코드가 백그라운드로 가면 호출스택의 함수와 동시에 실행이 가능하다.)

      3. 백그라운드에서 태스크큐로 보낸다( 만약, setTimeout실행시는 그 시간만큼 이후에 보내짐)

      4. 호출스택실행이 끝나서 비워지면(), 태스크 큐의 콜백을 호출스택으로 올려준다.

 

3. 비동기 

  - 특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 자바스크립트의 특성을 의미한다.

  - 자주사용하는 비동기 처리

      setTimeout() : Web API의 한 종류이며, 코드를 바로 실행하지 않고 지정한 시간만큼 기다렸다가 로직을 실행한다.

      Promise : 내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체. 주로 서버에서 받아온 데이터를 화면에 표시할 때 사용.

                      Then을 붙이면 결과를 반환하고 실행이 완료되지 않았으면 완료된 후에 Then내부 함수가 실행 된다.

const condition = true;
const promise = new Promise((resolve, reject) =>{
	if(confition){
    resolve('성공');
    }else{
    reject('실패');
    }
  });
  //다른 코드 작성 가능
  promise
  	.then((message) =>{     //Resolve(성공리턴값) -> then
    console.log(message);
    })
    .catch((error) =>{      //Reject(실패값) -> catch
    console.log(error);
    })
    .finally(() =>{         //Finally 부분 무조건 실행
    console.log('무조건 실행')
    });

  async : function앞에 async를 선언하면 new Promise()해서 객체생성 선언을 생략할 수 있다.

async function callUser(){ 
	//서버에 연결된 로직 수행부분
	ruturn 'hana';
}
const user= fetchUser();
user.then(console.log);   //Promise객체 없어도 then을 사용할수있다.
728x90

'what I Learnd > TIL' 카테고리의 다른 글

TIL - 2021/11/24  (0) 2021.11.24
TIL -2021/11/16  (0) 2021.11.17
TIL - 2021/11/12  (0) 2021.11.12
TIL -2021/11/11  (0) 2021.11.11
TIL - 2021/11/10  (0) 2021.11.10
Comments