console.log(`1`);
setTimeout(() => console.log(`2`), 1000);
console.log(`3`);
function printImmediately(print) {
print();
}
printImmediately(() => console.log(`hello`));
function printWithDelay(print, timeout) {
setTimeout(print, timeout);
}
printWithDelay(() => console.log(`async callback`), 2000);
class UserStorage {
loginUser(id, password, onSuccess, onError) {
setTimeout(() => {
if (
(id === `ellie` && password === `1234`) ||
(id === `hyeji` && password === `0233`)
) {
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.getRoles(
user,
userwithRole => {
alert(`hello ${userwithRole.name}, you have a ${userwithRole.role}role`);
},
error => {
console.log(error);
}
);
},
error => {
console.log(error);
}
);