CALL STACK
&
EVENT LOOP
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
a = 3
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
b = a + 4
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
console.log(...)
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
main()
const a = 3;
const b = a + 4;
console.log('b = ', b);Call stack
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
multiply
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
someNumber = multiply(...)
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
multiply(...)
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
multiply(...)
result = a * b
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
multiply(...)
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
multiply(...)
return result
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
multiply(...)
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
console.log(someNumber)
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
main()
function multiply(a, b) {
const result = a * b;
return result;
}
const someNumber = multiply(5, 4);
console.log(someNumber);Call stack
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
fs = require(...)
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
file1 = fs.readFileSync(...)
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
file1 = fs.readFileSync(...)

const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
file2 = fs.readFileSync(...)
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
file2 = fs.readFileSync(...)

const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
file3 = fs.readFileSync(...)
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
file3 = fs.readFileSync(...)

const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
console.log(file1)
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
console.log(file2)
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
console.log(file3)
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
main()
const fs = require('fs');
const file1 = fs.readFileSync('file1.txt');
const file2 = fs.readFileSync('file2.txt');
const file3 = fs.readFileSync('file3.txt');
console.log(file1);
console.log(file2);
console.log(file3);Call stack
ASYNC
CALLBACK
Funkcja która zostanie wykonana po określonej czynności
console.log('starting app');
setTimeout(function () {
console.log('my function callback');
}, 5000);
console.log('end app');
function getUser(id, callback) {
const user = {
id: id,
name: 'Jan'
};
// ...
callback(user);
}
getUser(12, function (userInfo) {
console.log(userInfo);
});
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
console.log(...)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
setTimeout(callback, 5000)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
console.log(...)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
callback()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
callback()
console.log(...)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
callback()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');Call stack
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log(...)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
setTimeout(...)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
setTimeout(...)
timer(5s) => callback
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback
console.log(...)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
timer(5s) => callback
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback()
console.log(...)
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback()
console.log('starting app');
setTimeout(function callback() {
console.log('my function callback');
}, 5000);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log(...)
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
setTimeout(...)
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
setTimeout(...)
timer(5s) => callback1
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback1
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback1
setTimeout(...)
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback1
setTimeout(...)
timer(0s) => callback2
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback1
timer(0s) => callback2
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback1
callback2
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback1
callback2
console.log(...)
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
main()
timer(5s) => callback1
callback2
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
timer(5s) => callback1
callback2
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
timer(5s) => callback1
callback2()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
timer(5s) => callback1
callback2()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
timer(5s) => callback1
callback2()
console.log(...)
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
timer(5s) => callback1
callback2()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
timer(5s) => callback1
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback1
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback1()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback1()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback1()
console.log(...)
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
callback1()
console.log('starting app');
setTimeout(function callback1() {
console.log('my function callback1');
}, 5000);
setTimeout(function callback2() {
console.log('my function callback2');
}, 0);
console.log('end app');
Call stack
Node APIs
Task queue
Event loop
CALLBACK
const request = require('request');
function getUser(id, callback) {
const url = 'https://jsonplaceholder.typicode.com/users/' + id;
request(url, function (error, response, body) {
callback(body);
});
}
getUser(5, function (userInfo) {
console.log(userInfo);
});
JavaScript Object Notation - lekki format wymiany danych komputerowych. JSON jest formatem tekstowym, bazującym na podzbiorze języka JavaScript.
Przykład formatu JSON
{
"id": 12,
"name": "Jan",
"age": 35,
"fullName": "Jan Nowak"
}JSON.PARSE
const userString = '{ "id": 12, "name": "Jan", "age": 35 }';
const user = JSON.parse(userString);
console.log(userString);
console.log(userString.id);
console.log(user);
console.log(user.id)JSON.STRINGIFY
const user = {
id: 12,
name: 'Jan',
age: 25,
};
const userString = JSON.stringify(user);
console.log(user);
console.log(user.id);
console.log(userString);
console.log(userString.id);CALLBACK ERRORS
const request = require('request');
const url = 'https://jsonplaceholder.typicode.com/users/123';
request(url, function (error, response, body) {
const result = JSON.parse(body);
console.log(result.address.geo.lat);
console.log(result.address.geo.lng);
});

const request = require('request');
const url = 'https://jsonplaceholder.typicode.com/users/123';
request(url, function (error, response, body) {
if (error) {
console.log('problem with api');
} else if (response.statusCode === 200) {
const result = JSON.parse(body);
console.log(result.address.geo.lat);
console.log(result.address.geo.lng);
} else {
console.log('user not found');
}
});
DEBUGGING NODEJS
const user = {
name: 'Jan',
};
user.age = 22;
user.name = 'Adam';
console.log(user);

REPL
REPL (ang. read-eval-print loop) - proste, interaktywne środowisko programowania. Praktycznie każdy język uruchamiany jako interpreter posiada REPL. Dzięki REPL użytkownik może wprowadzać polecenia, które zostaną wykonane a ich wynik wypisany na ekran.






DEBUGGER;
const user = {
name: 'Jan',
};
user.age = 22;
debugger;
user.name = 'Adam';
console.log(user);

DEBUGGING IN BROWSER





DEBUGGING IN VISUAL STUDIO CODE


nodejs-event-loop
By Piotr Tarasiuk
nodejs-event-loop
- 269