A callback function is a function passed into another function as an argument. Problem : It create a deep down tree structure which makes our code complex to read.
function setuser(id, name, callback) {
setTimeout(() => {
callback({ id, userName: name });
}, 2000);
}
function gethobbies(username, callback) {
setTimeout(() => {
if (username == "Ankrish") {
callback(["Gaming", "Listning", "Running", "Swimming"]);
}
else callback(`You are not Ankrish`);
}, 2000);
}
setuser(10, "Rahul", (user) => {
gethobbies(user.userName, (hobbies) => console.log(hobbies));
});
setuser(10, "Ankrish", user);
function user(res) {
gethobbies(res.userName, hobbies);
}
function hobbies(res) {
console.log(res);
}
Hold the eventual result of an async operation.
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ id: 1, fname: "Ankrish", lname: "Kandpal" });
reject(new Error("Reject State"));
}, 2000);
});
promise.then((res) => console.log(res.fname)).catch((err) => console.log(err.message));
function setuser(id, name) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ id, userName: name });
}, 2000);
});
}
function gethobbies(username) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (username == "Ankrish") {
resolve(["Gaming", "Listning", "Running", "Swimming"]);
} else resolve(`You are not Ankrish`);
}, 2000);
});
}
setuser(10, "Ankrish").then((user) =>
gethobbies(user.userName).then((hobbies) => console.log(hobbies))
);
const p = Promise.resolve({ id: 1 });
p.then((result) => console.log(result));
const r = Promise.reject(new Error("Something Fails"));
p.catch((err) => console.log(err.message));
const p1 = new Promise((resolve) => {
setTimeout(() => {
console.log("Async Operation 1");
resolve(1);
}, 2000);
});
const p2 = new Promise((resolve) => {
setTimeout(() => {
console.log("Async Operation 2");
resolve(2);
}, 2000);
});
Promise.all([p1, p2]).then((result) => console.log(result)); // Completely failed if one of the promise will reject
Promise.race([p1, p2]).then((result) => console.log(result)); // Resolve only one promise. Return the promise which resolve first
function setuser(id, name) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ id, userName: name });
}, 2000);
});
}
function gethobbies(username) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (username == "Ankrish") {
resolve(["Gaming", "Listning", "Running", "Swimming"]);
} else resolve(`You are not Ankrish`);
}, 2000);
});
}
async function caller() {
const user = await setuser(10, "Ankrish");
const hobbies = await gethobbies(user.userName);
console.log(hobbies);
}
caller();