What if your code could wait for things without getting stuck or messy?
Creating promises in Javascript - Why You Should Know This
Imagine you want to fetch data from the internet and then show it on your webpage. Without promises, you have to wait and check repeatedly if the data has arrived before you can use it.
This waiting and checking manually is slow and confusing. It can cause your program to freeze or behave unpredictably because you don't know exactly when the data will be ready.
Creating promises lets you write code that says, "When the data is ready, then do this." It handles waiting for you, so your program stays smooth and easy to understand.
fetchData(function(data) {
processData(data);
});new Promise((resolve) => {
fetchData(resolve);
}).then(processData);It enables writing clear, organized code that handles tasks happening now or later without freezing your app.
Think of ordering food at a restaurant: you place your order (start a promise), then wait without standing at the kitchen door, and when the food is ready, the waiter brings it to you (promise resolved).
Manual waiting for tasks is slow and confusing.
Promises let your code wait smoothly and react when ready.
This makes your programs faster and easier to read.
Practice
resolve function do inside a JavaScript Promise?Solution
Step 1: Understand the role of
Theresolvein promisesresolvefunction is called when the asynchronous task finishes successfully.Step 2: Differentiate from
rejectrejectis used for failure, soresolvemust mean success.Final Answer:
It marks the promise as successfully completed. -> Option CQuick Check:
resolve = success [OK]
- Confusing resolve with reject
- Thinking resolve cancels the promise
- Believing resolve pauses execution
Solution
Step 1: Recall the Promise constructor syntax
The Promise constructor takes a single function with two parameters: resolve and reject, wrapped in parentheses.Step 2: Check each option for correct syntax
new Promise((resolve, reject) => { }) correctly usesnew Promise((resolve, reject) => { }). Others have syntax errors.Final Answer:
new Promise((resolve, reject) => { }) -> Option DQuick Check:
Promise syntax = new Promise((resolve, reject) => { }) [OK]
- Missing parentheses around parameters
- Using wrong keyword order
- Incorrect arrow function syntax
const p = new Promise((resolve, reject) => {
resolve('Done');
});
p.then(result => console.log(result));Solution
Step 1: Understand promise resolution
The promise callsresolve('Done'), so it completes successfully with value 'Done'.Step 2: Check what
thendoesthenreceives the resolved value and logs it, so 'Done' is printed.Final Answer:
Done -> Option AQuick Check:
Resolved value logged = Done [OK]
- Expecting undefined instead of resolved value
- Confusing promise object with resolved output
- Thinking promise logs automatically
const p = new Promise(resolve, reject) => {
resolve('Success');
};Solution
Step 1: Check Promise constructor usage
The Promise constructor requires a single function argument wrapped in parentheses.Step 2: Identify arrow function syntax error
The code usesnew Promise(resolve, reject) => { }which is invalid syntax. It should benew Promise((resolve, reject) => { }).Final Answer:
Arrow function syntax is incorrect for Promise constructor. -> Option BQuick Check:
Arrow function must be inside parentheses [OK]
- Not wrapping parameters in parentheses
- Omitting new keyword (not in this case)
- Using wrong arrow function syntax
Solution
Step 1: Understand how to delay resolution
UsesetTimeoutto delay callingresolveby 1000 ms (1 second).Step 2: Check each option for correct usage
new Promise((resolve) => { setTimeout(() => resolve('Done'), 1000); }) correctly passes a function to Promise and callsresolve('Done')insidesetTimeout. new Promise(resolve => setTimeout(resolve('Done'), 1000)) calls resolve immediately. new Promise((resolve, reject) => { resolve('Done'); setTimeout(() => {}, 1000); }) resolves immediately and delays nothing. new Promise(() => { setTimeout(() => resolve('Done'), 1000); }) does not receive resolve parameter.Final Answer:
new Promise((resolve) => { setTimeout(() => resolve('Done'), 1000); }) -> Option AQuick Check:
Delay resolve with setTimeout inside Promise [OK]
- Calling resolve immediately instead of inside setTimeout
- Not passing resolve parameter
- Placing setTimeout outside Promise
Ready to prove it?
Pass the test and this pattern moves unknown
