728x90
반응형
'use strict';
// javascript is synchronous. 동기적이다.
// Execute the code block by order after hoisting. 호이스팅 된 이후부터 작성한 순서에 맞춰 하나하나 동기적으로 실행된다.
// hoisting: var, function declaration 함수 선언들이 자동으로 제일 위로 올라가는 것
console.log(1);
setTimeout(() => console.log(2), 1000)
console.log(3);
// Synchronous callback 즉각적으로 동기적으로 실행
function printImmediately(print) {
print();
}
printImmediately(() => console.log('hello'));
// Asynchronous callback 나중에 언제 실행될지 예측할수 없는 콜백
function printWidthDelay(print, timeout) {
setTimeout(print, timeout);
}
printWidthDelay(() => 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) {
setTimeout(() => {
if (user === 'ellie') {
onSuccess({name: 'ellie', role: 'admin'});
} else {
onError(new Error('no access'));
}
}, 1000)
}
}
const userStorage = new UserStorage();
const id = prompt('enter your id');
const password = prompt('enter your password');
userStorage.loginUser(
id,
password,
user => {
userStorage.getRole(
user,
userWithRole => {
alert(`Hello ${userWithRole.name}, you have a ${userWithRole.role} role`)
},
error => {
console.log(error);
}
);
}
error => {
console.log(error);
}
);
https://www.youtube.com/watch?v=s1vpVCrT8f4
728x90
반응형
'typescript' 카테고리의 다른 글
자바스크립트 9. 유용한 10가지 배열 함수들. Array APIs 총정리 (0) | 2020.07.09 |
---|---|
자바스크립트 13. 비동기의 꽃 JavaScript async 와 await 그리고 유용한 Promise APIs (0) | 2020.07.07 |
UglifyJs [자바스크립트] 압축(Minify) / 난독화(Uglify) (0) | 2020.06.23 |
자바스크립트 8. 배열 제대로 알고 쓰자. 자바스크립트 배열 개념과 APIs 총정리 (0) | 2020.06.22 |
Typescript - class (0) | 2020.06.19 |
댓글