Promises Questions Javascript
Q1. What's the output?
console.log("start");
const promise1 = new Promise((resolve, reject) => {
console.log(1);
resolve(2);
});
promise1.then((res) => {
console.log(res);
});
console.log("end");
?
Answer
// start
// 1
// end
// 2
Q2. What's the output?
console.log("start");
const promise1 = new Promise((resolve, reject) => {
console.log(1);
resolve(2);
console.log(3);
});
promise1.then((res) => {
console.log(res);
});
console.log("end");
?
Answer
// start
// 1
// 3
// end
// 2
Followup 1: What's the output
console.log("start");
const promise1 = new Promise((resolve, reject) => {
console.log(1);
console.log(3);
});
promise1.then((res) => {
console.log(res);
});
console.log("end");
?
Answer
// start
// 1
// 3
// end
.thencallback won't be executed if theresolve()function is not called
Q3. What's the output?
console.log("start");
const fn = () =>
new Promise((resolve, reject) => {
console.log(1);
resolve("success");
})
console.log("middle");
fn().then((res) => {
console.log(res);
});
console.log("end");
?
Answer
// start
// 1
// middle
// end
// success
Q4. What's the output?
function job() {
return new Promise(function (resolve, reject) {
reject();
});
}
let promise = job();
promise
.then(function() {
console.log("Success 1");
})
.then(function() {
console.log("Success 2");
})
.then(function() {
console.log("Success 3");
})
.catch(function() {
console.log("Error 1");
})
.then(function() {
console.log("Success 4");
});
?
Answer
// Error 1
// Success 4
Q5. What's the output?
function job(state) {
return new Promise(function (resolve, reject) {
if (state) {
resolve("success");
} else {
reject("error");
}
});
}
let promise = job(true);
promise
.then(function (data) {
console.log(data);
return job(false);
})
.catch(function (error) {
console.log(error);
return "Error caught";
})
.then(function (data) {
console.log(data);
return job(true);
})
.catch(function (error) {
console.log(error);
})
?
Answer
// success
// error
// Error caught
Q6. What's the output?
function job(state) {
return new Promise(function (resolve, reject) {
if (state) {
resolve("success");
} else {
reject("error");
}
});
}
let promise = job(true);
promise
.then(function (data) {
console.log(data);
return job(true);
})
.then(function (data) {
if (data !== "victory") {
throw "Defeat";
}
return job(true);
})
.then(function (data) {
console.log(data);
})
.catch(function (error) {
console.log(error);
return job(false);
})
.then(function (data) {
console.log(data);
return job(true);
})
.catch(function (error) {
console.log(error);
return "Error caught";
})
.then(function (data) {
console.log(data);
return new Error("test"); // Not returning a promise
})
.then(function (data) {
console.log("Success: ", data.message);
})
.catch(function (data) {
console.log("Error: ", data.message);
});
?
Answer
// success
// Defeat
// error
// Error caught
// Success: test
Q7. Promise Chaining write an example
?
const firstPromise = new Promise((resolve, reject) => {
resolve("First!");
})
const secondPromise = new Promise((resolve, reject) => {
resolve(firstPromise);
});
secondPromise
.then((res) => {
return res;
})
.then((res) => {
console.log(res);
})
let p=() => new Promise((resolve, reject) => {
console.log("P");
resolve("qArg, from P");
})
let q = (arg) => new Promise((resolve, reject) => {
console.log("Q", arg);
resolve("rArg, from Q");
})
let r = (arg) => new Promise((resolve, reject) => {
console.log("R", arg);
resolve("rArg");
})
p().then(q).then(r);
Q8. Rewrite this example code using async await instead of .then .catch in loadJson
function loadJson(url) {
return fetch(url).then((response) => {
if (response.status == 200) {
return response.json();
} else {
throw new Error(response.status);
}
});
}
loadJson("https://fakeurl.com/no-such-user.json")
.catch((err) => {
console.log(err);
});
?
Answer
async function loadJson(url) {
let response = await fetch(url);
if (response.status == 200) {
let json = await response.json();
return json;
}
throw new Error(response.status);
}
loadJson("https://fakeurl.com/no-such-user.json")
.catch((err) => {
console.log(err);
});
Q9. Solve Promise Recursively
function promRecurse(funcPromises) {
// Write implementation here
}
https://youtu.be/HaJdoFp2OEc?t=2639&si=vp3xcxqVGVhoCehN