Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Event Loop

Event Loop

Just a quick glance at how the event loop works in JavaScript.

Avatar for overthemike

overthemike

October 20, 2015

Other Decks in Technology

Transcript

  1. …

  2. HOW DOES JS WORK? JS Runtime Call Stack function foo

    () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  3. HOW DOES JS WORK? JS Runtime Call Stack main() function

    foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  4. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    function foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  5. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() function foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  6. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() function foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz(); foo()
  7. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() function foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz(); foo() console.log()
  8. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() function foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz(); foo()
  9. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() function foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  10. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    function foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  11. HOW DOES JS WORK? JS Runtime Call Stack main() function

    foo () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  12. HOW DOES JS WORK? JS Runtime Call Stack function foo

    () { console.log("Hello World"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  13. HOW DOES JS WORK? JS Runtime Call Stack function foo

    () { throw new Error("Woops"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  14. HOW DOES JS WORK? JS Runtime Call Stack main() function

    foo () { throw new Error("Woops"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  15. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    function foo () { throw new Error("Woops"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  16. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() function foo () { throw new Error("Woops"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  17. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() foo() function foo () { throw new Error("Woops"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  18. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() foo() function foo () { throw new Error("Woops"); } function bar () { return foo(); } function baz () { return bar(); } baz();
  19. HOW DOES JS WORK? JS Runtime Call Stack main() baz()

    bar() foo() function foo () { throw new Error("Woops"); } function bar () { return foo(); } function baz () { return bar(); } baz(); Stack Trace
  20. HOW DOES JS WORK? JS Runtime Call Stack foo() function

    foo() { return foo(); } foo(); foo()
  21. HOW DOES JS WORK? JS Runtime Call Stack foo() function

    foo() { return foo(); } foo(); foo() foo()
  22. HOW DOES JS WORK? JS Runtime Call Stack foo() function

    foo() { return foo(); } foo(); foo() foo() foo()
  23. HOW DOES JS WORK? JS Runtime Call Stack foo() function

    foo() { return foo(); } foo(); foo() foo() foo() foo()
  24. HOW DOES JS WORK? JS Runtime Call Stack foo() function

    foo() { return foo(); } foo(); foo() foo() foo() foo() foo()
  25. HOW DOES JS WORK? JS Runtime Call Stack foo() function

    foo() { return foo(); } foo(); foo() foo() foo() foo() foo() foo()
  26. HOW DOES JS WORK? JS Runtime Call Stack foo() function

    foo() { return foo(); } foo(); foo() foo() foo() foo() foo() foo() foo()
  27. HOW DOES JS WORK? JS Runtime Call Stack foo() Stack

    Trace function foo() { return foo(); } foo(); foo() foo() foo() foo() foo() foo() foo()
  28. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 1000); console.log("Vegas JS"); Console
  29. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); Console
  30. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); console.log() Console
  31. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); console.log() Console “Hello”
  32. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); Console “Hello”
  33. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); setTimeout() Console “Hello”
  34. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); Console “Hello”
  35. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); console.log() Console “Hello”
  36. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); console.log() Console “Hello” “Vegas JS”
  37. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 1000); console.log("Vegas JS"); Console “Hello” “Vegas JS”
  38. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 1000); console.log("Vegas JS"); Console “Hello” “Vegas JS”
  39. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 1000); console.log("Vegas JS"); Console “Hello” “Vegas JS” console.log()
  40. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 1000); console.log("Vegas JS"); Console “Hello” “Vegas JS” “World” console.log()
  41. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 1000); console.log("Vegas JS"); Console “Hello” “Vegas JS” “World”
  42. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 0); console.log("Vegas JS"); Web/Node APIs Task Queue Event Loop
  43. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); Web/Node APIs Task Queue Event Loop
  44. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); console.log() Web/Node APIs Task Queue Event Loop
  45. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); Web/Node APIs Task Queue Event Loop
  46. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); setTimeout() Web/Node APIs Task Queue Event Loop
  47. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); setTimeout() Web/Node APIs Task Queue Event Loop
  48. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); setTimeout() Web/Node APIs Task Queue Event Loop
  49. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); setTimeout() console.log() Web/Node APIs Task Queue Event Loop
  50. HOW DOES JS WORK? JS Runtime Call Stack main() console.log("Hello");

    setTimeout(function(){ console.log("World"); }, 0); console.log("Vegas JS"); setTimeout() Web/Node APIs Task Queue Event Loop
  51. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 0); console.log("Vegas JS"); setTimeout() Web/Node APIs Task Queue Event Loop
  52. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 0); console.log("Vegas JS"); setTimeout() Web/Node APIs Task Queue Event Loop
  53. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 0); console.log("Vegas JS"); Web/Node APIs Task Queue Event Loop
  54. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 0); console.log("Vegas JS"); Web/Node APIs console.log() Task Queue Event Loop
  55. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 0); console.log("Vegas JS"); Web/Node APIs console.log() Task Queue Event Loop
  56. HOW DOES JS WORK? JS Runtime Call Stack console.log("Hello"); setTimeout(function(){

    console.log("World"); }, 0); console.log("Vegas JS"); Web/Node APIs Task Queue Event Loop