1console.log('Start');
2
3// Synchronous code
4function syncFunction() {
5 console.log('Sync function');
6}
7
8// Process.nextTick - highest priority microtask
9process.nextTick(() => {
10 console.log('nextTick 1');
11});
12
13// Promise - microtask
14Promise.resolve().then(() => {
15 console.log('Promise 1');
16
17 // Nested Promise
18 Promise.resolve().then(() => {
19 console.log('Nested Promise 1');
20 });
21});
22
23// setTimeout - macrotask (timer)
24setTimeout(() => {
25 console.log('setTimeout 1');
26
27 // nextTick inside setTimeout
28 process.nextTick(() => {
29 console.log('nextTick inside setTimeout');
30 });
31}, 0);
32
33// setImmediate - macrotask (check phase)
34setImmediate(() => {
35 console.log('setImmediate 1');
36});
37
38// Async/await
39async function asyncFunction() {
40 console.log('Async start');
41 await Promise.resolve();
42 console.log('After await');
43}
44
45// File I/O - uses thread pool
46fs.readFile('file.txt', (err, data) => {
47 console.log('File read complete');
48
49 process.nextTick(() => {
50 console.log('nextTick after file read');
51 });
52});
53
54// Multiple nextTicks
55process.nextTick(() => {
56 console.log('nextTick 2');
57});
58
59// Multiple Promises
60Promise.resolve().then(() => {
61 console.log('Promise 2');
62});
63
64// Call synchronous function
65syncFunction();
66
67// Execute async function
68asyncFunction();
69
70// Nested setTimeout with delay
71setTimeout(() => {
72 console.log('setTimeout 2 (100ms)');
73
74 setTimeout(() => {
75 console.log('Nested setTimeout');
76 }, 0);
77}, 100);
78
79console.log('End');