Asynchronous 함수 (비동기 함수)의 이해
new Promise( (resolve,reject) => {} )
형태로 만들고 , .then
.catch
method를 통해 resolve 되었을때와 reject되었을 때의 결과 값을 지정해준다 const getCoffee = new Promise((resolve,reject)=> {
const rand = Math.random();
if(rand < 0.5) {
resolve()}
else {
reject()
}
})
getCoffee.then(()=> {console.log("yay I got coffee")})
getCoffee.catch(()=> {console.log("no coffee :(")})
const getCoffee = new Promise((resolve,reject)=> {
setTimeout(() => {
const rand = Math.random();
if(rand < 0.5) {
resolve()}
else {
reject()
}},5000)
})
const getCoffeePromise = () => {
return new Promise((resolve,reject)=> {
setTimeout(() => {
const rand = Math.random();
if(rand < 0.5) {
resolve()}
else {
reject()
}},5000)
})
};
-.then
과 .catch
를 chain해서 작성할 수 있다.
getCoffeePromise()
.then(()=> {console.log("yay I got coffee")})
.catch(()=> {console.log("no coffee :(")})
const fakeRequest = (url) => {
return new Promise((resolve,reject)=> {
setTimeout(() => {
const pages = {
'/users' : [{id:1},{id:2}],
'/about' : 'This is the about Page'
};
const data = pages[url];
if (data) {
resolve({status : 200, data})
}
else {
reject({status : 404})}},1000)
});
};
fakeRequest('/about')
.then((res)=> {console.log('status code', res.status),
console.log('Data', res.data)
})
.catch((res)=> {console.log("status code", res.status)})
fetch("")
이렇게 사용하였다면 axios를 axios.get("")
로 사용한다고 보면 된다.res.json()
하는 과정이 필요한데 axios는 자동으로 해준다) axios.get("https://~~~~")
.then(res => {console.log(res.data)})
.catch(err => {console.log(err)})
callback
과 .then
을 헷갈리지 않고, API가 호출 될때 그 response를 사용할 수 있도록 사용할 수있는 쉬운 방법이다.async function greet () {
return "Hello!!";
}
greet()
호출하면 Hello가 바로 나오는게 아니라, Promise{<resolved> : "Hello!!"}
가 return 된다.
async function greet () {
return "Hello!!";
}
greet().then((val => {'promise resolved with' , console.log(val)})
//promise resolved with "Helo!!" 가 출력된다
async function getPlanets () {
const res = await axios.get('https://ddd');
//axios.get()만하면 Promise 형태인데 await 앞에 붙여줌으로서
//javascript는 promise가 resolve 되면 그때 res에 값을 지정한다.
console.log(res.data)
}
try {} catch {}
사용async function getPlanets() {
try {
const res = await axios.get('https://ddd');
//axios.get()만하면 Promise 형태인데 await 앞에 붙여줌으로서
//javascript는 promise가 resolve 되면 그때 res에 값을 지정한다.
console.log(res.data)
} catch (e) {
console.log('In catch' , e);
}
}
getPlanets()