일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바스크립트 element api
- 보안뉴스 요약
- Oracle SQL
- javascript
- ES6
- 자바스크립트 API
- python
- 파이썬
- 다크웹
- 자바스크립트 객체
- 오라클
- 카카오프로젝트 100
- 자바스크립트 기본 문법
- numpy
- 자바스크립트 prototype
- 보안뉴스요약
- 자바스크립트
- oracle db
- 보안뉴스한줄요약
- php
- oracle
- 카카오프로젝트
- 자바스크립트 jQuery
- 깃허브
- GIT
- 카카오프로젝트100
- 랜섬웨어
- 자바스크립트 node
- 보안뉴스 한줄요약
- 보안뉴스
- Today
- Total
FU11M00N
[ JavaScript ] JS async와 await 본문
- asyncd와 await
async와 await는 기존의 비동기 처리 방식인 콜백 함수와 프로미스의 단점을 보완하기 위해 나온 문법입니다.
- async와 await 사용하기
async function 함수명() {
await 비동기처리 메서드();
}
함수 앞에 async 예약어를 붙이고 비동기 처리를 해야 하는 코드를 await앞에 붙이면 됩니다.
async function findAndSaveUsers(Users){
//생략
}
findAndSaveUsers().then(()=> { /*생략*/ });
// 혹은
async function other(){
const result = await findAndSaveUsers();
}
하지만 비동기 처리 메서드가 프로미스 객체를 반환하지 않는다면 await가 의도한 대로 동작 안 하기 때문에
꼭 Async 함수는 항상 promise를 반환해야 합니다.
function fun1() {
return new Promise(function(resolve, reject) {
let num = 10;
resolve(items)
});
}
async function fun2() {
var result = await fetchItems();
console.log(result); // 10
}
위의 예시에서 fun1() 함수는 프로미스 객체를 반환해주는 함수입니다.
fun1() 함수가 실행되면 프로미스가 Resolved로 이행되며 결과 값은 num변수가 됩니다.
fun2() 함수를 실행하면 fun1() 함수의 결괏 값인 num 변수가 result 변수에 담기면서 console.log(result); 의 출력 값은 10이 됩니다.
여기서 await를 사용하지 않으면 전 포스팅에서 배웠던. then()을 사용하거나 콜백 함수를 사용했어야 합니다.
하지만 async와 await 문법을 사용하게 되면 쉽고 간결한 코드를 짤 수 있을 것입니다.
- async & await 예외처리 하기
프로미스에서는 에러 처리를 위해. catch()를 사용했었습니다.
async function fun1(Users){
try{
let user = await Users.findOne({});
user.name = 'fu11_m00n';
user = await user.save();
user = await Users.findOne({gender : 'm'});
}
catch(error){
console.error(error);
}
}
async에서는 try catch 문법을 사용하여 예외처리를 할 수 있습니다.
위와 같이 코드를 실행하다가 통신 오류가 생기거나 다양한 오류가 생겼을 때 catch문으로 잡아내어 에러를 처리할 수 있습니다.
ref
Node.js 교과서: 기본기에 충실한 Node.js 10 입문서.
joshua1988.github.io/web-development/javascript/js-async-await/
'Programming > Javascript' 카테고리의 다른 글
동기 비동기 (2) | 2022.12.14 |
---|---|
[ JavaScript ] JS Promise (0) | 2021.03.06 |
[ Node.js ] Node의 특징 (0) | 2021.03.04 |
[ Node.js ] Node란 (0) | 2021.03.04 |
[ ES6 Script ] JS 기본 매개변수 (0) | 2021.02.16 |