개념정리
async : Promise를 간결하고, 코드를 깔끔하게 정리하기 위한 문법이다.
💡 async의 장점! async를 사용하면 코드가 동기적으로 실행되는 코드처럼 보인다.
async 장점
Code - Promise
// Promise
function findAndSaveUser(Users) {
Users.findOne({})
.then(user => {
user.name = 'zero';
return user.save();
})
.then(user => {
return Users.findOne({
gender: 'm'
});
})
.then(user => {
// Code
})
.catch(err => {
console.error(err);
});
}
Code - async
// async, await
async function findAndSaveUser(Users) {
try {
let user = await Users.findOne({});
user.name = 'zero';
user = await user.save();
user = await Users.findOne({
gender: 'm'
});
// 생략
} catch (err) {
console.error(err);
}
}
async의 장점
- Code가 동기적으로 실행되는 코드처럼 보인다.
- Code의 길이가 줄어든다.
async 사용법
Code
async function Developer(name, age, part, index) {
try {
// Callback Function
/*
db.query(SELECT ?, ?, ? FROM Developer WHERE id = ?',[name, age, part, index],
(err, dbGetD) =>;
*/
let dbGetD = await db.query(
'SELECT ?, ?, ? FROM Developer WHERE id = ?',
[name, age, part, index]
);
return [dbGetD[index].name, dbGetD[index].age, dbGetD[index].part];
} catch (err) {
console.error(err);
}
}
async 사용법
- 함수를 선언할 때 async를 붙인다.
- try문으로 catch를 사용하여 Error가 발생하면 console.error로 Error를 출력하게 만든다.
- Promise 앞에 await을 붙여주면 된다.
Code - 이름 없는 함수 생성 및 스스로 호출
(async (name, age, part, index) => {
try {
// Callback Function
/*
db.query(SELECT ?, ?, ? FROM Developer WHERE id = ?',[name, age, part, index],
(err, dbGetD) =>;
*/
let dbGetD = await db.query(
'SELECT ?, ?, ? FROM Developer WHERE id = ?',
[name, age, part, index]
);
return [dbGetD[index].name, dbGetD[index].age, dbGetD[index].part];
} catch (err) {
console.error(err);
}
})();
💡 함수를 소괄호로 감싸고, 그 뒤에 자신을 호출하기 위해서 소활호를 써주면
이름 없는 함수를 생성할 수 있고, 자동으로 호출이 된다.