We use synchronous and asynchronous execution to control how tasks run in a program. Synchronous runs tasks one by one, while asynchronous lets some tasks run in the background so the program doesn't wait.
Synchronous vs asynchronous execution in Javascript
// Synchronous example console.log('Start'); console.log('Middle'); console.log('End'); // Asynchronous example console.log('Start'); setTimeout(() => { console.log('Middle'); }, 1000); console.log('End');
Synchronous code runs line by line, waiting for each step to finish.
Asynchronous code can use callbacks, promises, or async/await to run tasks without waiting.
console.log('First'); console.log('Second'); console.log('Third');
console.log('First'); setTimeout(() => { console.log('Second'); }, 500); console.log('Third');
async function greet() { console.log('Hello'); await new Promise(r => setTimeout(r, 1000)); console.log('World'); } greet(); console.log('!');
This program shows synchronous and asynchronous execution. 'Start' and 'End' print immediately. The message inside setTimeout prints after 1 second without stopping the program.
console.log('Start'); setTimeout(() => { console.log('Async task done'); }, 1000); console.log('End');
Asynchronous code helps keep programs responsive, especially in web pages.
Use asynchronous methods for tasks like fetching data or waiting for user actions.
Remember: synchronous code blocks the program until it finishes, asynchronous does not.
Synchronous runs tasks one after another, waiting for each to finish.
Asynchronous runs tasks in the background, letting other code run at the same time.
Use asynchronous to keep programs fast and responsive.
Practice
Solution
Step 1: Understand synchronous execution
Synchronous means tasks happen one by one, each waiting for the previous to finish.Step 2: Match description to options
Tasks run one after another, waiting for each to finish before starting the next. clearly states tasks run one after another, which matches synchronous behavior.Final Answer:
Tasks run one after another, waiting for each to finish before starting the next. -> Option DQuick Check:
Synchronous = sequential task execution [OK]
- Confusing synchronous with asynchronous execution
- Thinking tasks run at the same time in synchronous
- Believing synchronous tasks run randomly
Solution
Step 1: Recall async function syntax
In JavaScript, the keyword 'async' comes before the function keyword to declare an asynchronous function.Step 2: Check each option
async function myFunction() {} uses 'async function myFunction() {}' which is correct syntax.Final Answer:
async function myFunction() {} -> Option BQuick Check:
Async keyword before function = correct syntax [OK]
- Placing async after function name
- Putting async inside parentheses
- Using invalid order of keywords
console.log('Start');
setTimeout(() => console.log('Middle'), 0);
console.log('End');Solution
Step 1: Understand synchronous and asynchronous parts
'console.log("Start")' runs immediately (synchronous). 'setTimeout' schedules 'Middle' to run later (asynchronous). 'console.log("End")' runs immediately after 'Start'.Step 2: Determine order of output
Output order is 'Start', then 'End', then 'Middle' because 'setTimeout' callback runs after current code finishes.Final Answer:
Start End Middle -> Option AQuick Check:
setTimeout delays callback, so logs after synchronous code [OK]
- Assuming setTimeout runs immediately
- Thinking output order matches code order exactly
- Ignoring asynchronous delay even if zero
function fetchData() {
let data;
fetch('https://api.example.com/data')
.then(response => response.json())
.then(json => data = json);
return data;
}
console.log(fetchData());Solution
Step 1: Analyze asynchronous fetch behavior
fetch returns a promise and .then callbacks run later, but fetchData returns immediately before data is set.Step 2: Understand return value timing
Since data is assigned asynchronously, fetchData returns undefined because data is not ready yet.Final Answer:
fetchData returns before data is assigned, so returns undefined -> Option CQuick Check:
Async assignment happens after return, so undefined returned [OK]
- Thinking fetchData waits for fetch to finish
- Assuming data is ready immediately
- Confusing syntax errors with logic errors
Solution
Step 1: Understand task dependencies
Task B depends on A finishing, so B must wait for A. Task C can run anytime, so it can run in parallel.Step 2: Choose asynchronous approach respecting dependencies
Run A asynchronously, then run B in A's callback, and run C asynchronously at the same time as A. runs A asynchronously, then runs B in A's callback (after A finishes), and runs C asynchronously at the same time as A, maximizing efficiency.Final Answer:
Run A asynchronously, then run B in A's callback, and run C asynchronously at the same time as A. -> Option AQuick Check:
Respect dependencies and run independent tasks in parallel [OK]
- Running dependent tasks in parallel ignoring order
- Running all tasks synchronously wasting time
- Running independent tasks sequentially unnecessarily
Ready to prove it?
Pass the test and this pattern moves unknown
