*https://medium.com/from-the-scratch/wtf-is-synchronous-and-asynchronous-1a75afd039df
// 출처 https://www.daleseo.com/js-async-callback/
function findUserAndCallBack(id, cb) {
setTimeout(function () {
console.log("waited 0.1 sec.")
const user = {
id: id,
name: "User" + id,
email: id + "@test.com",
}
cb(user) // 비동기를 위해 콜백으로 호출
}, 100)
}
findUserAndCallBack(1, function (user) {
console.log("user:", user)
})
// 출처 https://www.daleseo.com/js-async-promise/
// Promise 생성 방법 1. 변수에 할당 혹은, 2. 함수의 리턴값으로 사용.
// resolove 는 잘 처리되었을때, reject는 오류일때 호출
// 1
const promise = new Promise(function(resolve, reject) { ... } );
// 2
function returnPromise() {
return new Promise((resolve, reject) => { ... } );
}
// 간단한 나눗셈 구현
function devide(numA, numB) {
return new Promise((resolve, reject) => {
if (numB === 0) reject(new Error("Unable to devide by 0."))
else resolve(numA / numB)
})
}
// devide 함수 호출 (성공일 경우)
devide(8, 2)
.then((result) => console.log("성공:", result))
.catch((error) => console.log("실패:", error))
// 성공 : 4
// devide 함수 호출 (실패일 경우)
devide(8, 0)
.then((result) => console.log("성공:", result))
.catch((error) => console.log("실패:", error))
// 실패 error: Unable to devide by 0.
// Promise (<anonymous>:4:20)
// new Promise (<anonymous>)
// at devide (<anonymous>:2:12)
// at <anonymous>:1:1
- Async & Await코드 예제
async-await/ function fetchItems() { return new Promise(function(resolve, reject) { var items = [1,2,3]; resolve(items) }); } async function logItems() { var resultItems = await fetchItems(); console.log(resultItems); // [1,2,3] }
- 프로미스 객체를 반환하는 함수인
fetchItems()
함수를 실행시키면 프로미스가 resolved되며 결과 값은items
배열이 된다.logItems()
함수를 실행시키면fetchItems()
함수의 결과 값인items
배열이resultItems
변수에 담긴다. 콘솔엔[1,2,3]
이 출력 될 것이다.- 만약 Await를 쓰지 않았다면 데이터를 받아온 후 콘솔에 출력하기 위해서 콜백이나 .then을 이용해야 한다.
*출처 : https://joshua1988.github.io/web-development/javascript/js-