티스토리 뷰
'use strict';
// javascript 는 synchronous.
// 호이스팅이 끝난 후 코드를 실행한다.
// hoisting : var, function declaration
// 모든 함수는 실행될 때 가장 먼저 선언된다.
// Synchronous callback
function printImmediately(print) {
print();
}
// Asynchronous callback
function printWithDelay(print, timeout) {
setTimeout(print, timeout);
}
console.log('1');
setTimeout(() => console.log('2'), 1000);
console.log('3');
printImmediately(() => console.log('hello'));
printWithDelay(() => console.log('async callback'), 2000);
// Callback Hell example
class UserStorage {
loginUser(id, password, onSuccess, onError) {
setTimeout(() => {
if(
(id === 'ellie' && password === 'dream') ||
(id === 'coder' && password === 'academy')
) {
onSuccess(id);
} else {
onError(new Error('not found'));
}
}, 2000);
}
getRoles(user, onSuccess, onError) {
console.log(`user: ${user}`);
setTimeout(() => {
if(user === 'ellie') {
onSuccess({name: 'ellie', role: 'admin'});
} else {
onError(new Error('no access'));
}
});
}
}
const userStorage = new UserStorage();
const id = prompt('enter your id');
const password = prompt('enter your password');
userStorage.loginUser(
id,
password,
user => {
userStorage.getRoles(
user,
(userWithRole) => {
alert(`Hello ${userWithRole.name}, ${userWithRole.role}`);
}, (error) => {
console.log(error);
}
);
},
error => {console.log(error)}
);
// 콜백지옥의 문제점
// 한눈에 알아보기 어려움
// 에러발생시나 디버깅이 어려움
'javascript' 카테고리의 다른 글
[javascript] - async, await, Promise API (0) | 2020.11.21 |
---|---|
[javascript] promise (0) | 2020.11.19 |
[javascript] json (0) | 2020.11.17 |
[Javascript] Array (0) | 2020.11.09 |
[javascript] Object (0) | 2020.11.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Java
- 클래스
- 병행프로세스
- stackframe
- 교착상태
- BFS
- Stack
- 자료구조
- 배열
- 구조체
- 이진탐색
- 재귀함수
- server side rendering
- 입출력장치
- 인접리스트
- client side rendering
- react
- dfs
- C++
- 최단경로
- 스텍
- C
- 세마포어
- 알고리즘
- javascript
- 퀵정렬
- 소프트웨어
- 동적프로그래밍
- 인접행렬
- 운영체제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함