📖 Scenario: You are building a simple app that simulates checking if a user is logged in. This check takes some time, so you will use a promise to handle the waiting.
🎯 Goal: Create a promise that waits 2 seconds and then resolves with the message "User is logged in". Then display this message.
📋 What You'll Learn
Create a promise called loginCheck that waits 2 seconds before resolving
Use setTimeout inside the promise executor function
Resolve the promise with the exact string 'User is logged in'
Use loginCheck.then to get the resolved message
Print the resolved message using console.log
💡 Why This Matters
🌍 Real World
Promises are used in web apps to handle tasks like loading data from servers, waiting for user input, or running animations smoothly.
💼 Career
Understanding promises is essential for frontend and backend JavaScript developers to write clean, readable, and efficient asynchronous code.
Progress0 / 4 steps
1
Create the loginCheck promise
Create a promise called loginCheck using new Promise with an executor function that takes resolve and reject as parameters.
Javascript
Hint
Use new Promise((resolve, reject) => { }) to create the promise.
2
Add a 2-second delay and resolve the promise
Inside the loginCheck promise executor, use setTimeout to wait 2000 milliseconds, then call resolve with the string 'User is logged in'.
Javascript
Hint
Use setTimeout(() => { resolve('User is logged in'); }, 2000) inside the promise.
3
Use then to get the resolved message
Use loginCheck.then with a function that takes a parameter message and inside it, call console.log(message).
Javascript
Hint
Use loginCheck.then(message => console.log(message)) to print the message.
4
Print the resolved message
Run the program and observe that after 2 seconds, the console prints User is logged in.
Javascript
Hint
Wait 2 seconds after running to see the message printed in the console.
Practice
(1/5)
1. What does the resolve function do inside a JavaScript Promise?
easy
A. It pauses the promise execution.
B. It marks the promise as failed.
C. It marks the promise as successfully completed.
D. It cancels the promise.
Solution
Step 1: Understand the role of resolve in promises
The resolve function is called when the asynchronous task finishes successfully.
Step 2: Differentiate from reject
reject is used for failure, so resolve must mean success.
Final Answer:
It marks the promise as successfully completed. -> Option C
Quick Check:
resolve = success [OK]
Hint: Resolve means success, reject means failure [OK]
Common Mistakes:
Confusing resolve with reject
Thinking resolve cancels the promise
Believing resolve pauses execution
2. Which of the following is the correct syntax to create a new Promise in JavaScript?
easy
A. new Promise(resolve, reject) => { }
B. Promise.new((resolve, reject) => { })
C. new Promise { resolve, reject => }
D. new Promise((resolve, reject) => { })
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 uses new Promise((resolve, reject) => { }). Others have syntax errors.
Final Answer:
new Promise((resolve, reject) => { }) -> Option D
Quick Check:
Promise syntax = new Promise((resolve, reject) => { }) [OK]
Hint: Promise needs a function with (resolve, reject) inside parentheses [OK]
Common Mistakes:
Missing parentheses around parameters
Using wrong keyword order
Incorrect arrow function syntax
3. What will be the output of this code?
const p = new Promise((resolve, reject) => {
resolve('Done');
});
p.then(result => console.log(result));
medium
A. Done
B. undefined
C. Error
D. Promise { <pending> }
Solution
Step 1: Understand promise resolution
The promise calls resolve('Done'), so it completes successfully with value 'Done'.
Step 2: Check what then does
then receives the resolved value and logs it, so 'Done' is printed.
Final Answer:
Done -> Option A
Quick Check:
Resolved value logged = Done [OK]
Hint: Resolve value appears in then callback [OK]
Common Mistakes:
Expecting undefined instead of resolved value
Confusing promise object with resolved output
Thinking promise logs automatically
4. Find the error in this Promise creation code:
const p = new Promise(resolve, reject) => {
resolve('Success');
};
medium
A. The reject function is never called.
B. Arrow function syntax is incorrect for Promise constructor.
C. Promise constructor missing the new keyword.
D. No error, code is correct.
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 uses new Promise(resolve, reject) => { } which is invalid syntax. It should be new Promise((resolve, reject) => { }).
Final Answer:
Arrow function syntax is incorrect for Promise constructor. -> Option B
Quick Check:
Arrow function must be inside parentheses [OK]
Hint: Promise needs one function argument wrapped in parentheses [OK]
Common Mistakes:
Not wrapping parameters in parentheses
Omitting new keyword (not in this case)
Using wrong arrow function syntax
5. You want to create a Promise that waits 1 second and then resolves with 'Done'. Which code correctly does this?
hard
A. new Promise((resolve) => { setTimeout(() => resolve('Done'), 1000); })
B. new Promise(resolve => setTimeout(resolve('Done'), 1000))
C. new Promise((resolve, reject) => { resolve('Done'); setTimeout(() => {}, 1000); })
D. new Promise(() => { setTimeout(() => resolve('Done'), 1000); })
Solution
Step 1: Understand how to delay resolution
Use setTimeout to delay calling resolve by 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 calls resolve('Done') inside setTimeout. 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 A
Quick Check:
Delay resolve with setTimeout inside Promise [OK]
Hint: Wrap resolve call inside setTimeout function [OK]
Common Mistakes:
Calling resolve immediately instead of inside setTimeout
Not passing resolve parameter
Placing setTimeout outside Promise
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.