What if your app could keep working smoothly while waiting for slow tasks to finish?
Why promises are used in Javascript - The Real Reasons
Imagine you want to fetch data from the internet and then show it on your webpage. If you try to do this step by step without any special tools, your program might freeze or get stuck waiting for the data to arrive.
Doing things one after another without waiting properly can make your app slow or unresponsive. You might also get confused about when the data is ready, causing errors or broken pages.
Promises let your program ask for data and keep working while waiting. When the data arrives, the promise tells your program to continue, making everything smooth and easy to manage.
const data = fetchData();
console.log(data); // might be undefined or cause errorsfetchData().then(data => {
console.log(data);
});Promises make it easy to handle tasks that take time, so your app stays fast and responsive.
When you order food online, you don't wait by the phone doing nothing. You do other things until the delivery arrives. Promises work the same way in code.
Manual waiting can freeze your app and cause errors.
Promises let your code keep running while waiting for results.
This makes apps faster, smoother, and easier to write.
Practice
Promise helps with:Solution
Step 1: Understand what promises do
Promises allow JavaScript to handle tasks like loading data without freezing the program.Step 2: Identify the correct purpose
Promises help manage asynchronous tasks so the program keeps running smoothly.Final Answer:
Handling tasks that take time without stopping the program -> Option DQuick Check:
Promises = handle async tasks without blocking [OK]
- Thinking promises slow down the program
- Confusing promises with data storage
- Believing promises remove the need for functions
Solution
Step 1: Recall correct Promise syntax
Promises are created withnew Promiseand a function withresolveandrejectparameters.Step 2: Check each option
Only let p = new Promise((resolve, reject) => { /* code */ }); uses the correct syntax withnew Promiseand arrow function.Final Answer:
let p = new Promise((resolve, reject) => { /* code */ }); -> Option AQuick Check:
Correct Promise syntax = new Promise(...) [OK]
- Using lowercase 'promise' instead of 'Promise'
- Trying to call Promise.create which doesn't exist
- Missing parentheses or arrow function syntax
const p = new Promise((resolve) => {
setTimeout(() => resolve('Done'), 100);
});
p.then(result => console.log(result));
console.log('Start');Solution
Step 1: Understand asynchronous behavior
ThesetTimeoutdelays theresolvecall by 100ms, soconsole.log('Start')runs first.Step 2: Trace the output order
First, 'Start' prints immediately, then after 100ms, 'Done' prints from the promise.Final Answer:
Start
Done -> Option AQuick Check:
Async delay means 'Start' before 'Done' [OK]
- Assuming promise resolves immediately
- Thinking 'Done' prints before 'Start'
- Ignoring asynchronous nature of setTimeout
const p = new Promise((resolve, reject) => {
resolve('Success');
reject('Error');
});
p.then(result => console.log(result))
.catch(error => console.log(error));Solution
Step 1: Understand promise state changes
Once a promise is resolved or rejected, its state is final and cannot change.Step 2: Analyze the code flow
The promise callsresolve('Success')first, so the laterreject('Error')is ignored.Final Answer:
Calling reject after resolve has no effect -> Option BQuick Check:
Promise settles once; later calls ignored [OK]
- Thinking reject overrides resolve if called later
- Believing then and catch can't be chained
- Confusing semicolon placement with logic errors
Solution
Step 1: Understand promise chaining for dependent tasks
When one task depends on another, use.then()to wait for the first before starting the second.Step 2: Identify correct chaining
Call fetchUser(), then inside its .then(), call fetchPosts() and return that promise correctly callsfetchUser(), then in its.then(), callsfetchPosts()and returns its promise to chain properly.Final Answer:
Call fetchUser(), then inside its .then(), call fetchPosts() and return that promise -> Option CQuick Check:
Promise chaining = dependent tasks in sequence [OK]
- Running dependent tasks in parallel without waiting
- Using setTimeout instead of promise chaining
- Calling tasks in wrong order
Ready to prove it?
Pass the test and this pattern moves unknown
