Skip to content

Commit 8bedcdc

Browse files
JavaScript: Callback Hell
1 parent 8b5a7b4 commit 8bedcdc

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

β€ŽJavaScript/Callbacks2.htmlβ€Ž

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Callback Hell</title>
7+
</head>
8+
<body>
9+
<script>
10+
/*
11+
# Callback Hell (Pyramid of doom): The structure formed when a callback function is within another callback function and the pattern continues ...
12+
- This is a disadvantage of callbacks
13+
- Hence, the alternative approaches of handling asynchonous code are promises and async-await
14+
15+
- Example: Order tracking app
16+
- Instantly: Order confirmed βœ…
17+
- After 2 seconds: Order is being prepared 🍜
18+
- After 10 seconds: Order prepared πŸŽ‰
19+
- After 5 seconds: Order handed over to the delivery person πŸ“¦
20+
- After 3 seconds: Order is on the way 🚴
21+
- After 8 seconds: Order reached it's destination πŸ“
22+
- After 4 seconds: Order has been delivered πŸ˜‹
23+
24+
Total processing time for order: 32 seconds
25+
*/
26+
27+
const placeOrder = (callback) => {
28+
console.log('Order confirmed βœ…')
29+
callback()
30+
}
31+
32+
placeOrder(() => {
33+
setTimeout(() => {
34+
console.log('Order is being prepared 🍜')
35+
setTimeout(() => {
36+
console.log('Order prepared πŸŽ‰')
37+
setTimeout(() => {
38+
console.log('Order handed over to the delivery person πŸ“¦')
39+
setTimeout(() => {
40+
console.log('Order is on the way 🚴')
41+
setTimeout(() => {
42+
console.log(`Order reached it's destination πŸ“`)
43+
setTimeout(() => {
44+
console.log(`Order has been delivered πŸ˜‹`)
45+
}, 4*1000)
46+
}, 8*1000)
47+
}, 3*1000)
48+
}, 5*1000)
49+
}, 10*1000)
50+
}, 2*1000)
51+
})
52+
</script>
53+
</body>
54+
</html>

0 commit comments

Comments
Β (0)