-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathasync.html
More file actions
98 lines (92 loc) · 3.21 KB
/
Copy pathasync.html
File metadata and controls
98 lines (92 loc) · 3.21 KB
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Async JavaScript - JavaScript Mastery</title>
<style>
body { background: #121212; color: #fff; font-family: sans-serif; padding: 20px; }
pre { background: #1e1e1e; padding: 10px; border-radius: 5px; margin-bottom: 20px; }
.output { background: #222; color: #b9f6ca; padding: 12px; border-radius: 5px; min-height: 40px; margin-bottom: 20px; white-space: pre-line; }
.btn { display: inline-block; background: #4caf50; color: white; font-size: 1.1em; padding: 10px 24px; border-radius: 6px; text-decoration: none; margin-top: 20px; }
.btn:hover { background: #388e3c; }
.explanation { background: #263238; color: #ffe082; border-radius: 6px; padding: 18px; margin-top: 30px; font-size: 1.08em; line-height: 1.7; }
.explanation h2 { color: #ffd600; margin-top: 0; }
</style>
</head>
<body>
<h1>Async JavaScript</h1>
<pre><code>function fetchData(callback) {
setTimeout(() => {
callback("Data received");
}, 1000);
}
function fetchDataPromise() {
return new Promise((resolve) => {
setTimeout(() => {
resolve("Promise resolved");
}, 1000);
});
}
async function getData() {
let data = await fetchDataPromise();
return data;
}
let output = "Starting async operations...\n";
fetchData((data) => {
output += `Callback: ${data}\n`;
document.getElementById('output').textContent = output;
});
fetchDataPromise().then(data => {
output += `Promise: ${data}\n`;
document.getElementById('output').textContent = output;
});
getData().then(data => {
output += `Async/Await: ${data}`;
document.getElementById('output').textContent = output;
});
</code></pre>
<div class="output" id="output"></div>
<a href="index.html" class="btn">Back to Index</a>
<div class="explanation">
<h2>Explanation</h2>
<ul>
<li><b>fetchData(callback)</b> — Simulates an async operation using a callback.</li>
<li><b>fetchDataPromise()</b> — Returns a Promise that resolves after 1 second.</li>
<li><b>getData()</b> — Uses async/await to wait for the Promise to resolve.</li>
<li>Shows how to handle async code with callbacks, Promises, and async/await.</li>
<li>The <b>output</b> variable collects the results and is displayed in the green output box above.</li>
</ul>
</div>
<script>
function fetchData(callback) {
setTimeout(() => {
callback("Data received");
}, 1000);
}
function fetchDataPromise() {
return new Promise((resolve) => {
setTimeout(() => {
resolve("Promise resolved");
}, 1000);
});
}
async function getData() {
let data = await fetchDataPromise();
return data;
}
let output = "Starting async operations...\n";
fetchData((data) => {
output += `Callback: ${data}\n`;
document.getElementById('output').textContent = output;
});
fetchDataPromise().then(data => {
output += `Promise: ${data}\n`;
document.getElementById('output').textContent = output;
});
getData().then(data => {
output += `Async/Await: ${data}`;
document.getElementById('output').textContent = output;
});
</script>
</body>
</html>