async 함수

//async 함수 선언문
async function foo(n) { return n }
foo(1).then(v => console.log(v)) // 1

//async 함수 표현식
const bar = async function (n) { return n; }
bar(2).then(v => console.log(v)) // 2

//async 화살표 함수
const baz = async n => n;
baz(3).then(v => console.log(v)) // 3

// async 메서드
const obj = {
	async foo(n) { return n }
};
obj.foo(4).then(v => console.log(v)) // 4

// async 클래스 메서드
class Myclass {
	async bar(n) { return n }
}
const Myclass = new Myclass();
myClass.bar(5).then(v => console.log(v)) // 5

await 키워드

async function bar(n) {
	const a = await new Promise(resolve => setTimeout(() => resolve(n), 3000));
	
	//두번째 비동기 처리를 수행하기 위해 첫번째 비동기 처리 결과가 필요함(a)
	const b = await new Promise(resolve => setTimeout(() => resolve(a +1), 2000))
	
	//세번째 비동기 처리를 수행하기 위해 두번째 비동기 처리 결과가 필요함(b)
	const c = await new Promise(resolve => setTimeout(() => resolve(b +1), 1000))

console.log([a,b,c]) // [1,2,3]
}
bar(1)