Arrow function expression (โ)
- function ํํ์ ์งง๊ฒ ํํํ ์ ์๋ ์ฅ์ ๊ณผ ์์ ์ this, arguments, super ๋๋ new.target์ ๋ฐ์ธ๋ฉ ํ์ง ์์ต๋๋ค.
- Arrow function๋ ํญ์ ์ต๋ช
์
๋๋ค.
- ECMAScript6๋ถํฐ ์ง์ํฉ๋๋ค.
ํ๊ธฐ๋ฒ
(param1, param2, โฆ, paramN) => { statements }
(param1, param2, โฆ, paramN) => expression
// ๋ค์๊ณผ ๋์ผํจ: => { return expression; }
// ๋งค๊ฐ๋ณ์๊ฐ ํ๋๋ฟ์ธ ๊ฒฝ์ฐ ๊ดํธ๋ ์ ํ์ฌํญ:
(singleParam) => { statements }
singleParam => { statements }
// ๋งค๊ฐ๋ณ์๊ฐ ์๋ ํจ์๋ ๊ดํธ๊ฐ ํ์:
() => { statements }
// ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์์ ๋ฐํํ๋ ๋ณธ๋ฌธ(body)์ ๊ดํธ ์์ ๋ฃ์:
params => ({foo: bar})
// ๋๋จธ์ง ๋งค๊ฐ๋ณ์ ๋ฐ ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์๊ฐ ์ง์๋จ
(param1, param2, ...rest) => { statements }
(param1 = defaultValue1, param2, โฆ, paramN = defaultValueN) => { statements }
// ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก ๋ด ๋น๊ตฌ์กฐํ๋ ์ง์๋จ
var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
f(); // 6
์์ ์ฝ๋
var a = [
"Hydrogen",
"Helium",
"Lithium",
"Berylยญlium"
];
var a2 = a.map(function(s){ return s.length });
var a3 = a.map( s => s.length );
async
AsyncFunction object
์ Returnํ๋ function ์์ ๋ช
์ํ๋ ๊ฒ์ด๋ค.
async function
์ await
๋ผ๋ ํํ์ ๊ฐ์ง๊ณ ์๋ค.
await
๋ฅผ ํตํด async
๋ ๋๊ธฐํ๊ณ promise
๋ฅผ ๋ฐ์ ์ดํ์ ์คํ๋๋ค.
ํ๊ธฐ๋ฒ
async function name([param[, param[, ... param]]]) {
statements
}
์์ ์ฝ๋
function Task1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('Task 1');
resolve('TASK1 RESULT');
}, 1000);
});
}
function Task2(arg1, arg2) {
return new Promise( (resolve, reject) => {
const result = arg1 + arg2;
setTimeout(()=>{
resolve(result);
}, 1000);
});
}
async function doIt() {
try {
let r1 = await Task1();
let r2 = await Task1();
let sum = await addTask(r1, r2);
console.log('Random Numbers : ', r1, r2);
console.log('Sum =', sum);
} catch (error) {
console.log('Task Failure', error);
}
}
doIt();
Reference