-
Notifications
You must be signed in to change notification settings - Fork 0
/
promiseToAsyncAwait.js
78 lines (61 loc) · 1.6 KB
/
promiseToAsyncAwait.js
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
class UserStorage {
async loginUser(id, password) {
await setTimeout(() => {
if (
(id === 'ellie' && password === 'dream') ||
(id === 'coder' && password === 'academy')
) {
return id
} else {
return new Error('not foundd')
}
}, 2000);
}
async getRoles(user) {
await setTimeout(() => {
if (user === 'ellie') {
return { name: 'ellie', role: 'admin' }
} else {
return new Error('not foundd')
}
}, 1000);
}
}
const userStorage2 = new UserStorage();
const id2 = prompt('enter your id')
const password2 = prompt('enter your password')
//바로 실행
userStorage2.loginUser(id2, password2)
.then(userStorage2.getRoles)
.then(user => alert(`Hello ${user.name}, you have a ${user.role} role`))
.catch(console.log)
const getApple = async () => {
await delay(2000)
return 'apple';
}
const getBanana = async () => {
await delay(1000)
return 'banana';
}
const pickFruits = () => {
// 병렬적
// const appple = await getApple()
// const bananaa = await getBanana()
//병렬적
const applePromise = getApple();
const bananaPromise = getBanana();
const appple = await applePromise
const bananaa = await bananaPromise
return `${appple} + ${bananaa}`
}
pickFruits().then(console.log)
//Promise.all()
const pickAllFruits = () => {
return Promise.all([getApple(), getBanana()]).then(fruits => fruits.join(' + '))
}
pickAllFruits().then(console.log)
//둘중에 먼저 받는 값을 return
const pickOnlyOne = () => {
return Promise.race([getApple(), getBanana()])
}
pickOnlyOne().then(console.log)