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