promise가 체인이된다보면 길어지기에

동기식으로 작성하는것처럼 보여주는 장점이 있다.

clear style of using promise

  1. async

    async function fetchUser() {
    	// do network request in 10 secs....
    
    	return 'ellie';
    }
    
    const user = fetchUser();
    user.then(console.log);
    console.log(user);
    
  2. await

    function delay(ms) {
    	return new Promise(resolve => setTimeout(resolve, ms));
    }
    
    async function getApple() {
    	await delay(2000);
    	throw 'error';
    	return '사과';
    }
    
    async function getBanana() {
    	await delay(1000);
    	return '바나나';
    }
    
    async function pickFruits() {
    	const applePromise = getApple();
    	const bananaPromise = getBanana();
    
    	const apple = await applePromise;
    	const banana = await bananaPromise;
    	return `${apple} + ${banana}`;
    }
    
    pickFruits().then(console.log);
    
  3. useful Promise APIs

    function pickAllFruits() {
    	return Promise.all([getApple(), getBanana()])
    	.then(fruits => fruits.join('+'));
    }
    
    pickAllFruits().then(console.log);
    
    function pickOnlyOne() {
    	return Promise.race([getApple(), getBanana()]);
    }
    
    pickOnlyOne().then(console.log);