JavaScript Promises and Async/Await Quiz

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.