본문 바로가기

책/코어자바스크립트

Async/ await

반응형

예제 4-17) 비동기 작업의 동기적 표현 - Promise + Async/await

var addCoffee = function (name) {  // 최초의 addCoffee 함수는 resolve(name)과 함께 Promise를 반환한다.
	return new Promise(function (resolve) {
    	setTimeout(function () {
        	resolve(name);
        }, 500);
    })
};

var coffeeMaker = async function () {
	var coffeeList = '';
    var _addCoffee = async function (name) {
    	coffeeList += (coffeeList ? ',' : '') + await addCoffee(name);
    };
    
    await _addCoffee('에스프레소');
    console.log(coffeeList);
    await _addCoffee('아메리카노');
    console.log(coffeeList);
    await _addCoffee('카페모카');
    console.log(coffeeList);
    await _addCoffee('카페라떼');
    console.log(coffeeList); 
}

비동기 작업을 수행하고자 하는 함수 앞에 async를 표기하고

함수 내부에서 실질적인 비동기 작업이 필요한 위치마다 await를 표기하는 것만으로
뒤의 내용을 Promise로 자동 전환하고, 해당 내용이 resolve된 이후에야 다음으로 진행합니다.
* resolve <-> reject

반응형