Can anyone explain which instruction is getting executed first. http.createServer() or server.listen and when callback function inside createserver will execute?
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
If you look at the NodeJS documentation for the HTTP module here: https://nodejs.org/api/http.html#httpcreateserveroptions-requestlistener
You'll see what the http.createServer call returns, from the docs:
Returns a new instance of http.Server.
Thus the createServer call must complete before it can return a server object. Which is being used in your the server.listen call being made a few lines below. Asynchronous in NodeJS doesn't mean random.
http.createServer() is the first to execute because the variable server must be set before use to avoid undefined error. And the http.createServer is a synchrone function asynchronous-vs-synchronous