따라서 동시에 두 가지 일을 처리할 수 없고, 한 번에 하나의 작업만이 가능하다. 그래서 동기적 방식이 아닌 비동기(asynchronous)로 작업을 처리한다. setTimeout함수 예가 대표적이다.
console.log('a')
function x() {
console.log('x')
}
setTimeout(x, 3000)
console.log('b')
// 결과
// a
// b
// x
async getUser() {
const result = await Axios.get("/users/auth").then((res) => {
console.log("[Auth]get userData:", res.data);
if (res.data) {
return res.data;
} else {
alert("fail to get userData");
}
});
return result;
};
// react는 useCallback이용
function getUserData(callback) {
let user;
setTimeout(function () {
user = "angela";
callback(user);
}, 2000);
}
getUserData(function (user) {
console.log(user);
});
useEffect 내부에서는 async, await가 적용이 안되므로 queueMicrotask를 이용한다.
useEffect(() => {
queueMicrotask(async () => {
let userdata = await user.getUser();
setUserData(userdata);
});
}, [setUserData]);