functiondeley(ms){returnnewPromise(resolve=>setTimeout(resolve,ms));}//1.5초를 기다리지 않고 바로 다음 코드를 수행asyncfunctionwalk(id){deley(1500);return`${id} arrived`;}//1초를 기다리고 나서 다음 코드를 수행asyncfunctionrun(id){awaitdeley(1000);return`${id} arrived`;}//먼저 수행된 비동기 함수의 결과 값을 반환asyncfunctiondoRace(id1,id2){returnPromise.race([walk(id1),run(id2)]);}//파라미터로 입력된 모든 비동기 함수가 처리된 후에 그 결과물들을 반환asyncfunctionarrive(id1,id2){returnPromise.all([walk(id1),run(id2)]).then(name=>name.join(', '));}doRace('woogie','umi').then(result=>console.log(`race winner: ${result}`));->racewinner:woogiearrived//받아오는 값을 바로 파라미터로 사용할 경우 둘 다 생략이 가능하다.arrive('woogie','umi').then(console.log);->woogiearrived,umiarrived