# [Javascript] ES2015+ ์์ฝ ์ ๋ฆฌ
# ES2015+์ ๋ฑ์ฅ
๊ธฐ์กด์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๋ค๋ฅธ ์ธ์ด์ ์ฅ์ ๋ค์ ๋ํ ํธ๋ฆฌํ ๊ธฐ๋ฅ๋ค์ด ๋ง์ด ์ถ๊ฐ๋์๋ค. ์ด ์ค์ ํ์ฉ๋๊ฐ ๋์ ๋ถ๋ถ์ ๋ํด์ ์์๋ณด์.
# 1. const, let
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์๋ฅผ ์ ์ธํ ๋ var๋ฅผ ์ด์ฉํด์๋ค. ํ์ง๋ง ์ด์ var๋ const
์ let
์ผ๋ก ๋์ฒดํ ๊ฒ์ด๋ค.
const์ let์ ํจ์ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ var์๋ ๋ฌ๋ฆฌ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ๋๋ค.
๋ธ๋ก ์ค์ฝํ๋ if, while, for, function
๋ฑ์์ ์ฌ์ฉํ๋ ์ค๊ดํธ์ ์ํ๋ ๋ฒ์๋ฅผ ๋ปํ๋ค. ๋ฐ๋ผ์ const์ let์ ์ด ์ค๊ดํธ ์์์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ๊ทธ ์ค์ฝํ ๋ฒ์ ์์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฅผ ํตํด ํธ์ด์คํ
์ ๊ด๋ จ๋ ๋ฌธ์ ๋ ์์ฐ์ค๋ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
# ๊ทธ๋ ๋ค๋ฉด const์ let์ ๋ฌด์จ ์ฐจ์ด์ผ๊น?
๊ฐ๋จํ ๋งํด์ let์ ๋์ ํ ๊ฐ์ ๊ณ์ ์์ ํ ์ ์์ง๋ง, const๋ ํ๋ฒ ๋์ ํ๋ฉด ๋ค๋ฅธ ๊ฐ ๋์ ์ ํ ์ ์๊ณ ์ด๊ธฐํ ์ ๊ฐ์ด ํ์๋ค.
const a = 0;
a = 1; // error
let b = 0;
b = 1; // 1
const c; // error
# 2. ํ ํ๋ฆฟ ๋ฌธ์์ด
๋ฐฑํฑ(`)์ ์ด์ฉํด ์๋ก์ด ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ค.
๋ฐฑํฑ์ ํค๋ณด๋์์
tabํค
์์ ์๋ค
๋ฐฑํฑ์ ํ์ฉํด์ ๋ฌธ์์ด ์์ ๋ณ์๋ ๋ฃ์ ์ ์๊ฒ ๋์๋ค. ๊ธฐ์กด์๋ ๋ณ์๊ฐ ๋ฑ์ฅํ ๋๋ง๋ค ๋ฐ์ดํ๋ฅผ ๋ซ๊ณ +๋ฅผ ํตํด ์ฐ๊ฒฐํ๋๋ฐ ์ด์ ๋ฐฑํฑ์ ํ์ฉํ๋ฉด ๋ณ์๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ํ๋ฒ์ ๋ชจ๋ ์์ฑ์ด ๊ฐ๋ฅํด์ก๋ค.
var string = num1 + ' + ' + num2 + ' = ' + result;
const string = `${num1} + ${num2} = ${result}`;
์๋๊ฐ ํจ์ฌ ๊ฐ๋ ์ฑ์ด ์ข์์ก๋ค. ๋ํ, ๋ฐฑํฑ ์์ ๋ฐ์ดํ๋ฅผ ํจ๊ป ์์ฑํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
# 3. ๊ฐ์ฒด ๋ฆฌํฐ๋ด
๋ค์ ์ฝ๋๋ oldObject ๊ฐ์ฒด์ ๋์ ์ผ๋ก ์์ฑ์ ์ถ๊ฐํ๋ ์ํฉ์ด๋ค.
# ๊ธฐ์กด ์ฝ๋
var sayNode = function() {
console.log('Node');
};
var es = 'ES';
var oldObject = {
sayJS: function(){
console.log('JS');
},
sayNode: sayNode,
};
oldObject[es + 6] = 'Fantastic';
oldObject.sayNode();
oldObject.sayJS();
console.log(oldObject.ES6);
์ด์ ์์ ๊ฐ์ ์ฝ๋๋ฅผ ์๋์ฒ๋ผ ์์ ํ ์ ์๋ค.
var sayNode = function() {
console.log('Node');
};
var es = 'ES';
const newObject = {
sayJS() {
console.log('JS');
},
sayNode,
[es+6]: 'Fantastic',
};
newObject.sayNode();
newObject.sayJS();
console.log(newObject.ES6);
oldObject์ newObject๋ฅผ ๋น๊ตํด๋ณด์.
๊ฐ์ฒด์ ๋ฉ์๋์ ํจ์๋ฅผ ์ฐ๊ฒฐํ ๋ ์ด์ :
์ ๊ฐ์ ์ฝ๋ก ๊ณผ function์ ๋ถ์ด์ง ์์๋ ๊ฐ๋ฅํด์ก๋ค.
๋ํ sayNode : sayNode
์ ๊ฐ์ด ์ค๋ณต๋๋ ์ด๋ฆ์ ๋ณ์๋ ๊ทธ๋ฅ ๊ฐ๋จํ sayNode ํ๋๋ง ์์ฑํ๋ฉด ๋๋ค.
๋ํ ๊ฐ์ฒด์ ์์ฑ๋ช ์ ๋์ ์ผ๋ก ์์ฑ์ด ๊ฐ๋ฅํ๋ค. ์ด์ ์๋ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐ๊นฅ์์ [es+6]์ผ๋ก ๋ง๋ค์์ง๋ง, ์ด์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์์์ ๋ง๋ค ์ ์๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
์ฝ๋์ ์์ ์ค์ด๊ณ , ํธ๋ฆฌํ๋ ์ต์ํด์ง๋ฉด ์ข๋ค.
# 4. ํ์ดํ ํจ์
๊ธฐ์กด์ function {}
๋ ์ด์ ์ฒ๋ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, ES2015 ์ดํ๋ก ํ์ดํ ํจ์๊ฐ ์๊ธฐ๋ฉด์ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค.
function add1(x, y) {
return x+y;
}
const add2 = (x, y) => x + y;
๋ ๊ฐ์ง ๋ชจ๋ ๋๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ ํจ์๋ค. ํ์ง๋ง ํ์ดํ ํจ์์์๋ function ๋์ =>
๊ธฐํธ๋ก ์ ์ธํ๋ค. ์ด๋ return๋ฌธ์ ์ค์ผ ์ ์๋ ์ฅ์ ์ด ์๋ค. ๋ํ ํ์ดํ ํจ์๋ function๊ณผ this ๋ฐ์ธ๋ ๋ฐฉ์์์ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
# ๊ธฐ์กด ์ฝ๋
var relationship1 = {
name: 'kim',
friends: ['a', 'b', 'c'],
logFriends: function() {
var that = this; // relationship1์ ๊ฐ๋ฆฌํค๋ this๋ฅผ that์ ์ ์ฅ
this.friends.forEach(function(friend){
console.log(that.name, friend);
});
},
};
relationship1.logFriends();
relationship1.logFriends()
์์ forEach๋ฌธ ์์ function ์ ์ธ๋ฌธ์ ์ฌ์ฉํ๋ค.
์ด๋ก์จ ๊ฐ์ ๋ค๋ฅธ ํจ์ ์ค์ฝํ this๋ฅผ ๊ฐ์ง๊ฒ ๋๋ฏ๋ก friends ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ that
์ด๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ค์ด ์ด์ this ๊ฐ์ ๋ฏธ๋ฆฌ ์ ์ฅํด๋๋ ๋ชจ์ต์ด๋ค.
const relationship2 = {
name: 'kim',
friends: ['a', 'b', 'c'],
logFriends() {
this.friends.forEach(friend => {
console.log(this.name, friend);
});
},
};
relationship2.logFriends();
์ด๋ฒ์๋ forEach๋ฌธ์์ function์ ์ ์ธํ์ง ์๊ณ ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ ๋ฐ๋ก ๋ฐ๊นฅ ์ค์ฝํ์ธ logFriends()
์ this๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ ์ํฉ์
๋๋ค. ์ด๋ฐ ์ํฉ์์๋ function ๋์ ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฐ๋ก ๋ฐ๊นฅ ์ค์ฝํ์ this๋ฅผ ์ ์ฅํด๋๊ณ ๋ถ๋ฌ์ค์ง ์์๋ ๋์ ํธ๋ฆฌํ๋ค.
# 5. ๋น๊ตฌ์กฐํ ํ ๋น
๊ฐ์ฒด๋ ๋ฐฐ์ด์์ ์์ฑ ํน์ ์์๋ฅผ ๊บผ๋ด์ฌ๋ ์ฌ์ฉํ๋ค.
# ๊ธฐ์กด ์ฝ๋
var candyMachine = {
status: {
name: 'node',
count: 5,
},
getCandy: function(){
return "Hi";
}
};
var getCandy = candyMachine.getCandy;
var count = candyMachine.status.count;
๊ธฐ์กด์๋ ๊ฐ์ฒด์์ ์์ฑ์ ๊ฐ์ ธ์ฌ ๋ ์ด์ฒ๋ผ ์์ฑํ๋ค.
const candyMachine1 = {
status: {
name: 'node',
count: 5,
},
getCandy1() {
return "Hi";
}
};
const { getCandy1, status: { count } } = candyMachine1;
console.log(getCandy1()) // Hi
console.log(count) // 5
ํ์ง๋ง ์ด์ฒ๋ผ ๊ฐ๋จํ๊ฒ ํ ์ค๋ก ๋ํ๋ด๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก๋ค. ์ฌ๋ฌ ๋จ๊ณ ์์ ์์ฑ๋ count1์ ๊ฐ์ ธ์ค๋ ๊ฒ์ฒ๋ผ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ด ๋ฟ๋ง ์๋๋ผ, ๋ฐฐ์ด์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
var array = ['nodejs', {}, 10, true];
var node = array[0];
var obj = array[1];
var bool = array[array.length - 1];
array๋ผ๋ ๋ฐฐ์ด ์์ 4๊ฐ์ง ์์๋ฅผ ๋ฃ๊ณ ๊ฐ์ ธ์ค๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋ค.
const array1 = ['nodejs', {}, 10, true];
const [node, obj, , bool] = array1;
bool์ true๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋ฐฐ์ด์ ๋ง์ง๋ง ๋ถ๋ถ์ ์์ฑํ ๊ฑธ ๋ณผ ์ ์๋ค. ์ด์ฒ๋ผ ์์ฑํ๋ฉด ๋งจ ๋์ด๋ผ๊ณ ์๋์ผ๋ก ์ธ์ํด์ฃผ๋ ์๋นํ ํธํ ์ฅ์ ์ด ์๋ค.
์ด์ฒ๋ผ ๋น๊ตฌ์กฐํ ํ ๋น์ ์ด์ฉํ๋ฉด, ๋ฐฐ์ด์ด ์์น๋ง๋ค ๋ณ์๋ฅผ ๋ฃ์ด ๋๊ฐ์ ์ญํ ์ ํ๋๋ก ๋ง๋ค ์ ์๋ค. ์ฝ๋ ์ค๋ ์๋นํ ์ค์ผ ์ ์๊ณ , ํนํ Node.js
์์๋ ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ๋ฐฉ์์ด ๋ง์ด ์ฌ์ฉ๋๋ค๊ณ ํ๋ค.
# 6. ํ๋ก๋ฏธ์ค(promise)
์๋ฐ์คํฌ๋ฆฝํธ์ Node๋ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ด๋ฒคํธ ์ฃผ๋ ๋ฐฉ์์ ํ์ฉํ๋ฉด์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ค. ์ฝ๋ฐฑ ํจ์ ์์ฒด๊ฐ ๋ณต์กํ ๊ฒ๋ ์๊ณ , ์ดํดํ๊ธฐ ์ด๋ ค์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ ์ค ํ๋์ด๊ธฐ๋ ํ๋ค.
์ด์ ES2015๋ถํฐ๋ ์ฝ๋ฐฑ ๋์ API๋ค์ด ํ๋ก๋ฏธ์ค ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ตฌ์ฑ๋๊ณ ์๋ค. ๋ฐ๋ผ์ ํ๋ก๋ฏธ์ค์ ๋ํด ์ ์ดํดํ๊ณ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ๋ณต์กํ ์ฝ๋ฐฑ ํจ์์ ์ง์ฅ์์ ๋ฒ์ด๋ ์ ์์ผ๋ ํ์คํ ์๊ณ ์์ด์ผ ํ๋ค.
promise ๊ฐ์ฒด ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
const condition = true;
const promise = new Promise((resolve, reject) => {
if (condition){
resolve('์ฑ๊ณต');
} else {
reject('์คํจ');
}
});
promise
.then((message) => {
console.log(message);
})
.catch((error) => {
console.log(error);
});
new Promise
๋ก ํ๋ก๋ฏธ์ค๋ฅผ ์์ฑํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์์ resolve์ reject
๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๊ฐ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฃ๋ ๋ฐฉ์์ด๋ค.
์ด์ ์ ์ธํ promise ๋ณ์์ then๊ณผ catch
๋ฉ์๋๋ฅผ ๋ถ์ด๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
resolve๊ฐ ํธ์ถ๋๋ฉด then์ด ์คํ๋๊ณ , reject๊ฐ ํธ์ถ๋๋ฉด catch๊ฐ ์คํ๋๋ค.
์ด์ resolve์ reject์ ๋ฃ์ด์ค ์ธ์๋ ๊ฐ๊ฐ then๊ณผ catch์ ๋งค๊ฐ๋ณ์์์ ๋ฐ์ ์ ์๊ฒ ๋์๋ค.
์ฆ, condition์ด true๊ฐ ๋๋ฉด resolve('์ฑ๊ณต')์ด ํธ์ถ๋์ด message์ '์ฑ๊ณต'์ด ๋ค์ด๊ฐ log๋ก ์ถ๋ ฅ๋๋ค. ๋ฐ๋๋ก false๋ฉด reject('์คํจ')๊ฐ ํธ์ถ๋์ด catch๋ฌธ์ด ์คํ๋๊ณ error์ '์คํจ'๊ฐ ๋์ด ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
์ด์ ์ด๋ฌํ ๋ฐฉ์์ ํ์ฉํด ์ฝ๋ฐฑ์ ํ๋ก๋ฏธ์ค๋ก ๋ฐ๊ฟ๋ณด์.
function findAndSaveUser(Users) {
Users.findOne({}, (err, user) => { // ์ฒซ๋ฒ์งธ ์ฝ๋ฐฑ
if(err) {
return console.error(err);
}
user.name = 'kim';
user.save((err) => { // ๋๋ฒ์งธ ์ฝ๋ฐฑ
if(err) {
return console.error(err);
}
Users.findOne({gender: 'm'}, (err, user) => { // ์ธ๋ฒ์งธ ์ฝ๋ฐฑ
// ์๋ต
});
});
});
}
๋ณดํต ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ๋ ํจํด์ ์ด์ ๊ฐ์ด ์์ฑํ ๊ฒ์ด๋ค. ํ์ฌ ์ฝ๋ฐฑ ํจ์๊ฐ ์ธ ๋ฒ ์ค์ฒฉ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
์ฆ, ์ฝ๋ฐฑ ํจ์๊ฐ ๋์ฌ๋ ๋ง๋ค ์ฝ๋๊ฐ ๊น์ด์ง๊ณ ๊ฐ ์ฝ๋ฐฑ ํจ์๋ง๋ค ์๋ฌ๋ ๋ฐ๋ก ์ฒ๋ฆฌํด์ฃผ๊ณ ์๋ค.
ํ๋ก๋ฏธ์ค๋ฅผ ํ์ฉํ๋ฉด ์๋์ ๊ฐ์ด ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
function findAndSaveUser1(Users) {
Users.findOne({})
.then((user) => {
user.name = 'kim';
return user.save();
})
.then((user) => {
return Users.findOne({gender: 'm'});
})
.then((user) => {
// ์๋ต
})
.catch(err => {
console.error(err);
});
}
then
์ ํ์ฉํด ์ฝ๋๊ฐ ๊น์ด์ง์ง ์๋๋ก ๋ง๋ค์๋ค. ์ด๋, then ๋ฉ์๋๋ค์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ค.
์๋ฌ๋ ๋ง์ง๋ง catch๋ฅผ ํตํด ํ๋ฒ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ๋ชจ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ด์ฒ๋ผ ๊ณ ์น ์ ์๋ ๊ฑด ์๋๊ณ , find์ save
๋ฉ์๋๊ฐ ํ๋ก๋ฏธ์ค ๋ฐฉ์์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ์ํฉ์ด๋ค.
์ง์ํ์ง ์๋ ์ฝ๋ฐฑ ํจ์๋
util.promisify
๋ฅผ ํตํด ๊ฐ๋ฅํ๋ค.
ํ๋ก๋ฏธ์ค ์ฌ๋ฌ๊ฐ๋ฅผ ํ๊บผ๋ฒ์ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ Promise.all
์ ํ์ฉํ๋ฉด ๋๋ค.
const promise1 = Promise.resolve('์ฑ๊ณต1');
const promise2 = Promise.resolve('์ฑ๊ณต2');
Promise.all([promise1, promise2])
.then((result) => {
console.log(result);
})
.catch((error) => {
console.error(err);
});
promise.all
์ ํด๋นํ๋ ๋ชจ๋ ํ๋ก๋ฏธ์ค๊ฐ resolve ์ํ์ฌ์ผ then์ผ๋ก ๋์ด๊ฐ๋ค. ๋ง์ฝ ํ๋๋ผ๋ reject๊ฐ ์๋ค๋ฉด, catch๋ฌธ์ผ๋ก ๋์ด๊ฐ๋ค.
๊ธฐ์กด์ ์ฝ๋ฐฑ์ ํ์ฉํ๋ค๋ฉด, ์ฌ๋ฌ๋ฒ ์ค์ฒฉํด์ ๊ตฌํํ์ด์ผํ์ง๋ง ํ๋ก๋ฏธ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ฒ๋ผ ๊น๋ํ๊ฒ ๋ง๋ค ์ ์๋ค.
# 7. async/await
ES2017์ ์ถ๊ฐ๋ ์ต์ ๊ธฐ๋ฅ์ด๋ฉฐ, Node์์๋ 7,6๋ฒ์ ๋ถํฐ ์ง์ํ๋ ๊ธฐ๋ฅ์ด๋ค. Node์ฒ๋ผ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๊ณ , ์ฝ๋ฐฑ์ ๋ณต์ก์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํ ํ๋ก๋ฏธ์ค๋ฅผ ์กฐ๊ธ ๋ ๊น๋ํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋์์ ์ค๋ค.
์ด์ ์ ํ์ตํ ํ๋ก๋ฏธ์ค ์ฝ๋๋ฅผ ๊ฐ์ ธ์๋ณด์.
function findAndSaveUser1(Users) {
Users.findOne({})
.then((user) => {
user.name = 'kim';
return user.save();
})
.then((user) => {
return Users.findOne({gender: 'm'});
})
.then((user) => {
// ์๋ต
})
.catch(err => {
console.error(err);
});
}
์ฝ๋ฐฑ์ ๊น์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ๋ ํ์ง๋ง, ์ฌ์ ํ ์ฝ๋๊ฐ ๊ธธ๊ธด ํ๋ค. ์ฌ๊ธฐ์ async/await
๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ์ด ๋ฐ๊ฟ ์ ์๋ค.
async function findAndSaveUser(Users) {
try{
let user = await Users.findOne({});
user.name = 'kim';
user = await user.save();
user = await Users.findOne({gender: 'm'});
// ์๋ต
} catch(err) {
console.error(err);
}
}
์๋นํ ์งง์์ง ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
function ์์ async
์ ๋ถ์ฌ์ฃผ๊ณ , ํ๋ก๋ฏธ์ค ์์ await
์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค. await์ ๋ถ์ธ ํ๋ก๋ฏธ์ค๊ฐ resolve๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ ๋ค์ ๋ก์ง์ผ๋ก ๋์ด๊ฐ๋ ๋ฐฉ์์ด๋ค.
์์์ ๋ฐฐ์ด ํ์ดํ ํจ์๋ก ๋ํ๋์ ๋ async/await
์ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ๋ค.
const findAndSaveUser = async (Users) => {
try{
let user = await Users.findOne({});
user.name = 'kim';
user = await user.save();
user = await user.findOne({gender: 'm'});
} catch(err){
console.error(err);
}
}
ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด์๋ async/await
์ผ๋ก ๋น๊ต์ ๊ฐ๋จํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
์์ ์๋ ์ค์ฒฉ๋ ์ฝ๋ฐฑํจ์๋ฅผ ํ์ฉํ ๊ตฌํ์ด ๋น์ฐ์ ๋์์ง๋ง, ์ด์ ๊ทธ๋ฐ ์ํฉ์ async/await
์ ์ ๊ทน ํ์ฉํด ์์ฑํ๋ ์ฐ์ต์ ํด๋ณด๋ฉด ์ข์ ๊ฒ์ด๋ค.