Week 9
Quiz 24

Quiz 24: Async / Await

⚠️
Warning: Executing code will replace the current content on this page with the output produced by the executed code. To return to the quiz simply reload the page using CTRL + R.

Question 1

Shows '2'?
JavaScript
const idPromise = x => new Promise(resolve => resolve(x));
const failPromise = err => new Promise((resolve, reject) => reject(err));
 
const writer = x => {
    document.writeln(x);
    return idPromise(x);
};
 
const inc = n => idPromise(n + 1);
const filterEven = n => n % 2 === 0 ? idPromise(n) : failPromise("not even");
 
const foo = async i => {
    let x = await idPromise(i);
    while (x < 4) {
        x = await filterEven(x);
        x = await writer(x);
        x = await inc(x);
    }
};
 
foo(1);

Question 2

Shows '1'?
JavaScript
const idPromise = x => new Promise(resolve => resolve(x));
const failPromise = err => new Promise((resolve, reject) => reject(err));
 
const writer = x => {
    document.writeln(x);
    return idPromise(x);
};
 
const foo = async i => {
    let x = await idPromise(i);
    x.then(writer);
};
 
foo(1);

Question 3

Shows '2'?
JavaScript
const idPromise = x => new Promise(resolve => resolve(x));
const failPromise = err => new Promise((resolve, reject) => reject(err));
 
const writer = x => {
    document.writeln(x);
    return idPromise(x);
};
 
const inc = n => idPromise(n + 1);
const filterEven = n => n % 2 === 0 ? idPromise(n) : failPromise("not even");
 
const foo = async i => {
    let x = await idPromise(i);
    while (x < 4) {
        let x = await idPromise(x);
        try {
            x = await filterEven(x);
        } catch (err) {
            // ignore the error
        }
        x = await writer(x);
        x = await inc(x);
    }
};
 
foo(1);

Question 4

Shows '1'?
JavaScript
const idPromise = x => new Promise(resolve => resolve(x));
const failPromise = err => new Promise((resolve, reject) => reject(err));
 
const foo = async i => {
    let x = await idPromise(i);
    document.write(x);
};
 
foo(1);

Question 5

Shows '1 2 3'?
JavaScript
const idPromise = x => new Promise(resolve => resolve(x));
const failPromise = err => new Promise((resolve, reject) => reject(err));
 
const writer = x => {
    document.writeln(x);
    return idPromise(x);
};
 
const inc = n => idPromise(n + 1);
 
const foo = async i => {
    let x = await idPromise(i);
    while (x < 4) {
        x = await writer(x);
        x = await inc(x);
    }
};
 
foo(1);