ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] async function
    JavaScript 2022. 12. 20. 10:06
    반응형
    SMALL

     

     

     

    async 비동기함수

     

     

    • async/await함수의 목적은 사용하는 여러 promise의 동작을 동기스럽게 사용할 수 있게하고, 어떠한 동작을 여러 promise의 그룹에서 간단하게 동작하게 하는 것이다. promise가 구조화된 callback과 유사한것 처럼 async/await 또한 제네레이터(generator)와 프로미스(promise)를 묶는것과 유사하다.
    • async함수는 항상 promise를 반환한다. 만약 async함수의 반환값이 명시적으로 promise가 아니라면 암묵적으로 promise로 감싸진다.
    async function foo() {
    	return 1
    }
    
    // 위 코드는 아래와 같다
    function foo() {
    	return Promise.resolve(1)
    }

     

     

     

     

     

    • async 함수의 본문은 0개 이상의 await문으로 분할된 것으로 생각할 수 있다. 
      첫번째 awiat문을 포함하는 최상위 코드는 동기적으로 실행된다. 따라서 await문이 없는 async함수는 동기적으로 실행된다. 
      하지만 await문이 있다면 async함수는 항상 비동기적으로 완료된다.
      예를들어,
    async function foo() {
    	await 1
    }
    
    //위 코드는 아래와 같다
    function foo() {
    	return Promise.resolve(1).then(() => undefined)
    }

     

     

     

     

     

     

    # 예제1. 날짜 validation 

    async checkValidation () {
        return new Promise(async (resolve, reject)=>{
            let frDate = new Date(calendarFrom)
            let toDate = new Date(calendarTo)
    
            if(toDate < frDate){
                alert('시작일자가 종료일자보다 클 수 없습니다.');
                return resolve(false)
            }
            
           
            let checkDays = await getNumberDays(calendarFrom, calendarTo)
            if(checkDays > 180){
                alert('조회는 6개월 기간까지만 조회할 수 있습니다.');
                return resolve(false)
            }
    
            return resolve(true)
        })
    },

     

     

     

     

    # 예제2. API request, response 

    getBarCode : function (barcode) {
            return new Promise(async (resolve, reject)=>{
                let param = {
                    Name: this.data.Name
                    Id: this.data.Id,  
                };
                let result = await Api.getQRBarCode.setParam(param).getResponse();
    
                return resolve(result.response.body)
            })
        },

     

     

     

     

     

     

     

     

     

     

    반응형
    LIST

    'JavaScript' 카테고리의 다른 글

    [JS] at 인덱스 요소 반환  (0) 2023.04.14
    [JS] 몫과 나머지 구하기  (0) 2023.04.13
    [JS] keydown, keyup, keypress  (0) 2022.12.07
    [JS] focus, blur Event  (0) 2022.12.06
    [JS] forEach  (0) 2022.11.30

    댓글

Designed by Tistory.