Node.js - #4 - Timers - Rodrigo Branas

1,444 views

Published on

Nesta apresentação, vamos falar sobre Timers, mostrando as principais características e diferenças entre setTimeout, setInterval e setImmediate.

Published in: Internet
  • Be the first to comment

Node.js - #4 - Timers - Rodrigo Branas

  1. 1. Rodrigo Branas – @rodrigobranas - http://www.agilecode.com.br Timers
  2. 2. Por meio dos timers, é possível agendar a execução de funções
  3. 3. Criando um timer com setTimeout setTimeout.js 1. console.log('A  '  +  new  Date());   2. setTimeout(function  ()  {   3.    console.log('B  '  +  new  Date());   4. },  3000);
  4. 4. É necessário importar algum módulo para utilizar a função setTimeout?
  5. 5. https://github.com/nodejs/node-v0.x-archive/blob/master/src/node.js
  6. 6. Invertendo a ordem de execução setTimeoutReverse.js 1. setTimeout(function  ()  {   2.    console.log('B  '  +  new  Date());   3. },  3000);   4. console.log('A  '  +  new  Date());
  7. 7. Por que ao inverter a ordem o resultado é o mesmo?
  8. 8. Para evitar o bloqueio do event loop, que é executado em uma única thread, as funções invocadas pelos timers ficam aguardando em uma fila.
  9. 9. Cancelando um timer com clearTimeout clearTimeout.js 1. var  a  =  setTimeout(function  ()  {   2.    console.log('A  '  +  new  Date());   3. },  3000);   4. var  b  =  setTimeout(function  ()  {   5.    console.log('B  '  +  new  Date());   6. },  3000);   7. clearTimeout(a);
  10. 10. É possível também criar um timer que execute a cada período de tempo
  11. 11. Criando um timer com setTimeout setTimeoutInterval.js 1. var  interval  =  function  (callback,  time)  {   2.    setTimeout(function()  {   3.        callback();   4.        interval(callback,  time);   5.    },  time);   6. };   7. interval(function()  {   8.    console.log('R  '  +  new  Date());   9. },  1000);
  12. 12. Não tem nada mais simples e direto?
  13. 13. Criando um timer com setInterval setInterval.js 1. setInterval(function()  {   2.    console.log('R  '  +  new  Date());   3. },  1000);
  14. 14. Cancelando um timer com clearInterval clearInterval.js 1. var  i  =  setInterval(function()  {   2.    console.log('R  '  +  new  Date());   3. },  1000);   4. setTimeout(function()  {   5.    clearInterval(i);   6. },  5000);
  15. 15. E se a intenção for apenas colocar a função na fila, para executar depois?
  16. 16. Criando um timer imediato setTimeoutZero.js 1. console.log('A  '  +  new  Date());   2. setTimeout(function()  {   3.    console.log('I  '  +  new  Date());   4. },  0);   5. console.log('B  '  +  new  Date());
  17. 17. Não tem nada mais simples e direto?
  18. 18. Criando um timer imediato setImmediate.js 1. console.log('A  '  +  new  Date());   2. setImmediate(function()  {   3.    console.log('I  '  +  new  Date());   4. });   5. console.log('B  '  +  new  Date());
  19. 19. Existe diferença de performance entre o setTimeout e o setImmediate?
  20. 20. Medindo a performance do setTimeout setTimeoutZeroTime.js 1. console.time('T');   2. setTimeout(function()  {   3.    console.timeEnd('T');   4. },  0);
  21. 21. Medindo a performance do setImmediate setImmediateTime.js 1. console.time('I');   2. setImmediate(function()  {   3.    console.timeEnd('I');   4. });
  22. 22. Tem como programar um timer utilizando uma data específica?
  23. 23. Rodrigo Branas   Agile Code: http://www.agilecode.com.br Twitter: @rodrigobranas SlideShare: http://www.slideshare.com/rodrigobranas YouTube: http://www.youtube.com/rodrigobranas LinkedIn: http://br.linkedin.com/in/rodrigobranas +Plus: https://plus.google.com/+RodrigoBranas GitHub: http://www.github.com/rodrigobranas

×