JavaScript Promises and Async/Await Quiz
Want to learn more than this quiz offers you? Have a look at my Frontend web
development courses.
Create an account and save your quiz results
Login and save your results
OR
Question 1/15
In what scenario would using `Promise.race()` be beneficial?
Select your answer
Question 2/15
Which of these statements about error handling in async functions is true?
Select your answer
Question 3/15
Observe the code below. What will the logs be?
async function appFlow() {
const result = await new Promise(resolve => setTimeout(() => resolve('Flowed'), 500));
console.log(result);
}
appFlow();
console.log('Started');
Select your answer
Question 4/15
Which option correctly demonstrates how to handle multiple promise rejections?
Select your answer
Question 5/15
Determine the correct outcome for this scenario.
let data;
async function fetchData() {
const result = await Promise.resolve(42);
data = result;
}
fetchData();
console.log(data);
Select your answer
Question 6/15
When running this code, what will be logged to the console?
async function exampleFunction() {
try {
return await Promise.reject('Failed');
} catch (e) {
console.log(e);
}
}
exampleFunction();
Select your answer
Question 7/15
Which of the following statements accurately describes `Promise.any()`?
Select your answer
Question 8/15
What does the following code print to the console?
async function test() {
await null;
console.log('printed');
}
test();
Select your answer
Question 9/15
Why does the following code not catch any errors?
async function example() {
try {
let data = await fetchNonExistent();
console.log(data);
} catch {
console.log('An error occurred');
}
}
example();
Select your answer
Question 10/15
What would the output be after the execution of the following code?
async function process() {
const p = new Promise(resolve => resolve('done'));
return p.finally(() => 'cleaned');
}
process().then(console.log);
Select your answer
Question 11/15
Why might using `Promise.all()` lead to performance issues compared to `Promise.allSettled()`?
Select your answer
Question 12/15
What will the value of `result` be in the following code snippet?
async function example() {
try {
const result = await Promise.reject('Error occurred');
} catch (error) {
return error;
}
}
example().then(console.log);
Select your answer
Question 13/15
What values are logged by the following code?
async function main() {
console.log('start');
setTimeout(() => console.log('middle'), 0);
await Promise.resolve('end');
console.log('end');
}
main();
Select your answer
Question 14/15
Consider the following code. What does it output?
async function asyncOp(num) {
return num * 2;
}
async function series() {
console.log(await asyncOp(1));
console.log(await asyncOp(2));
}
series();
Select your answer
Question 15/15
Given the following code, what does `someAsyncFunction` return?
function someAsyncFunction() {
return Promise.resolve(123);
}
someAsyncFunction();
Select your answer
Your Results
You did not answer any questions correctly.
Your Answers
Question 1/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
In what scenario would using `Promise.race()` be beneficial?
Available answers
`Promise.race()` returns the promise from the array that settles first, whether it is resolved or rejected. It's used when you need a result quickly from a series of potential sources.
Question 2/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Which of these statements about error handling in async functions is true?
Available answers
You can use `try` and `catch` blocks to handle errors that occur in async functions due to rejected promises or explicit exceptions thrown within the function body.
Question 3/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Observe the code below. What will the logs be?
async function appFlow() {
const result = await new Promise(resolve => setTimeout(() => resolve('Flowed'), 500));
console.log(result);
}
appFlow();
console.log('Started');
Available answers
'Started' is logged immediately after `appFlow()` before the promise resolves. After 500ms, 'Flowed' is logged when the promise inside `appFlow()` resolves.
Question 4/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Which option correctly demonstrates how to handle multiple promise rejections?
Available answers
`Promise.allSettled(promisesArray)` will return a promise that resolves after all input promises have settled, regardless of whether they fulfilled or rejected, allowing us to handle each promise's result individually.
Question 5/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Determine the correct outcome for this scenario.
let data;
async function fetchData() {
const result = await Promise.resolve(42);
data = result;
}
fetchData();
console.log(data);
Available answers
Immediately after `fetchData()` is invoked, `console.log(data);` runs before the promise resolves. Hence, `data` is `undefined` at the time of the log.
Question 6/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
When running this code, what will be logged to the console?
async function exampleFunction() {
try {
return await Promise.reject('Failed');
} catch (e) {
console.log(e);
}
}
exampleFunction();
Available answers
The `Promise.reject('Failed')` throws an error, which is caught in the `catch (e)` block. Therefore, 'Failed' is logged to the console.
Question 7/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Which of the following statements accurately describes `Promise.any()`?
Available answers
`Promise.any()` returns a promise that resolves as soon as any of the promises in the iterable is resolved. If all of the promises are rejected, it returns an AggregateError.
Question 8/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
What does the following code print to the console?
async function test() {
await null;
console.log('printed');
}
test();
Available answers
In this code, `await null;` is effectively a no-operation in terms of async handling. It does not throw an error, and the function proceeds to the next line, which is the `console.log('printed')`. Therefore, 'printed' is logged to the console.
Question 9/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Why does the following code not catch any errors?
async function example() {
try {
let data = await fetchNonExistent();
console.log(data);
} catch {
console.log('An error occurred');
}
}
example();
Available answers
`fetchNonExistent` is not a defined function, so the error 'ReferenceError' is thrown even before the promise handling can be processed, leading to an immediate exit from the async function.
Question 10/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
What would the output be after the execution of the following code?
async function process() {
const p = new Promise(resolve => resolve('done'));
return p.finally(() => 'cleaned');
}
process().then(console.log);
Available answers
The `finally` method does not alter the value with which the promise resolves or rejects. Hence, the promise resolves with 'done', which is why 'done' is logged.
Question 11/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Why might using `Promise.all()` lead to performance issues compared to `Promise.allSettled()`?
Available answers
`Promise.all()` will reject immediately when any of the input promises rejects. This can lead to issues if you're performing multiple independent operations, and `Promise.allSettled()` is preferred to handle these scenarios where all outcomes are significant.
Question 12/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
What will the value of `result` be in the following code snippet?
async function example() {
try {
const result = await Promise.reject('Error occurred');
} catch (error) {
return error;
}
}
example().then(console.log);
Available answers
In this example, `await Promise.reject('Error occurred')` will throw an error which is caught by the `catch` block, returning the error message as `result`. Therefore, `example().then(console.log)` will log 'Error occurred'.
Question 13/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
What values are logged by the following code?
async function main() {
console.log('start');
setTimeout(() => console.log('middle'), 0);
await Promise.resolve('end');
console.log('end');
}
main();
Available answers
The execution order is 'start', then the microtask queue resolves the awaited promise logging 'end', and finally the setTimeout callback logs 'middle'. Microtasks (e.g., promise callbacks) are executed before the next task (from the task queue, such as `setTimeout`).
Question 14/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Consider the following code. What does it output?
async function asyncOp(num) {
return num * 2;
}
async function series() {
console.log(await asyncOp(1));
console.log(await asyncOp(2));
}
series();
Available answers
`asyncOp` returns a promise that resolves to `num * 2`. The `series` function awaits these promises and logs the results 2 and 4 sequentially. Therefore, 2 and 4 are consecutively printed to the console.
Question 15/15
😊 Your
answer was correct
🙁 Your
answer was incorrect
Given the following code, what does `someAsyncFunction` return?
function someAsyncFunction() {
return Promise.resolve(123);
}
someAsyncFunction();
Available answers
The `someAsyncFunction` explicitly returns a Promise object that resolves with the value of 123. Therefore, the function call returns a promise that resolves to 123.