NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled...
Transcript of NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled...
![Page 1: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/1.jpg)
NODEASYNCHRONOUS JAVASCRIPT
![Page 2: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/2.jpg)
Problemconsole.log("Before...");
setTimeout(function () {
console.log("Reading a user from DB");
}, 2000);
console.log("After...");
// Whats the output
Usman Akram CUI LAHORE 2
![Page 3: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/3.jpg)
Output of ProblemBefore...
After...
Reading a user from DB
Usman Akram CUI LAHORE 3
![Page 4: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/4.jpg)
ASynchronousIts not◦Concurrent
◦Multi Threaded
It is◦ Just a function scheduled to be called in future
Usman Akram CUI LAHORE 4
![Page 5: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/5.jpg)
Outputconsole.log("Before");
const user = getUser();
console.log(user);
console.log("After");
//Output
//Before
//dummy
//After
//DB Query entertained
function getUser(){
setTimeout(function(){
console.log('DB Query entertained');
return {id:9,name:'usman'}
},1000);
return "dummy";
}
Usman Akram CUI LAHORE 5
![Page 6: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/6.jpg)
Patterns for Dealing with Asynchronous CodeCallback
Promises
Async/await
Usman Akram CUI LAHORE 6
![Page 7: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/7.jpg)
CallBackfunction getUser(id, callback) {
setTimeout(function () {
console.log("Reading User");
callback({ id: id, name: "Usman" });
}, 2000)
}
Usman Akram CUI LAHORE 7
![Page 8: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/8.jpg)
CallBackconsole.log("Before");
getUser(1, function (userObj) {
console.log("Received User");
console.log(userObj);
});
console.log("After");
Usman Akram CUI LAHORE 8
![Page 9: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/9.jpg)
Imagine this (CallBack Hell)getUser(1, (user) => {
getRepositories(user.gitHubUsername, (repos) =>{
getCommits(repos[0], (commits) => {
console.log(commits);
})
})
});
//You can use named Functions but still NOOOOO
Usman Akram CUI LAHORE 9
![Page 10: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/10.jpg)
Promiseconst p = new Promise(function(resolve,reject){
resolve({name:"hareem"});
reject(new Error("Hareem is naughty"));
});p.then((result)=>{
console.log(result.name);
});
p.catch((error)=>{console.log("Error Caught"+error.message)});
Usman Akram CUI LAHORE 10
![Page 11: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/11.jpg)
Promiseconst p = new Promise((resolve, reject) => {
// Kick off some async work
// ...
setTimeout(() => {
resolve(1); // pending => resolved, fulfilled
reject(new Error('message')); //pending => rejected
}, 2000);
});
Usman Akram CUI LAHORE 11
![Page 12: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/12.jpg)
Using Promisep.then(result => console.log('Result', result))
.catch(err => console.log('Error', err.message));
Usman Akram CUI LAHORE 12
![Page 13: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/13.jpg)
Beauty in CodegetUser(1)
.then(user => getRepositories(user.gitHubUsername))
.then(repos => getCommits(repos[0]))
.then(commits => console.log('Commits', commits))
.catch(err => console.log('Error', err.message));
Usman Akram CUI LAHORE 13
![Page 14: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/14.jpg)
Async and Await approachasync function displayCommits() {
try {
const user = await getUser(1);
const repos = await getRepositories(user.gitHubUsername);
const commits = await getCommits(repos[0]);
console.log(commits);
}
catch (err) {
console.log('Error', err.message);
}
}
Usman Akram CUI LAHORE 14
![Page 15: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/15.jpg)
Resolved Promises (For Testing)Promise.reolve(1);
Promise.reject(new Error(''));
Usman Akram CUI LAHORE 15
![Page 16: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/16.jpg)
Running Promses in parallelPromise.all([p1, p2]);// When all promises are resolved
Promise.race([p1, p2]);// When any one finished first
Usman Akram CUI LAHORE 16
![Page 17: NODE - usmanlive.comASynchronous Its not Concurrent Multi Threaded It is Just a function scheduled to be called in future Usman Akram CUI LAHORE 4](https://reader035.fdocuments.us/reader035/viewer/2022070721/5ee15f1dad6a402d666c471c/html5/thumbnails/17.jpg)
Sample Codehttps://1drv.ms/f/s!AtGKdbMmNBGd0V1N14IfBGU1Npoi
Usman Akram CUI LAHORE 17