{"id":12485,"date":"2017-04-19T18:27:10","date_gmt":"2017-04-19T16:27:10","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12485"},"modified":"2017-04-19T18:27:10","modified_gmt":"2017-04-19T16:27:10","slug":"node-js-gestire-intervalli-di-tempo","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/node-js-gestire-intervalli-di-tempo\/","title":{"rendered":"Node.js, gestire intervalli di tempo"},"content":{"rendered":"<p>Capita spesso che il nostro programma per <a href=\"http:\/\/www.devapp.it\/wordpress\/introduzione-a-node-js\/\" target=\"_blank\">Node.js <\/a>debba svolgere delle operazioni temporizzate come, ad esempio, l&#8217;aggiornamento di dati o l&#8217;esecuzione di un&#8217;elaborazione. Lo si pu\u00f2 fare con <em>setInterval<\/em> una funzione in grado di eseguire in maniera asincrona una porzione di codice ad intervalli regolari.<\/p>\n<p>Vediamo un esempio subito:<\/p>\n<pre class=\"lang:js decode:true\">setInterval(function() {\r\n  console.log(\"Passati tre secondi...\");\r\n}, 3000);\r\n<\/pre>\n<p>Eseguendo in Node.js le precedenti righe di codice, ogni tre secondi viene stampata la stringa &#8220;Passati tre secondi&#8230;&#8221;. Il passo della\u00a0temporizzazione viene fissato dal parametro che segue la funzione di callback (espresso in millisecondi).<\/p>\n<p>Opzionalmente, si possono fornire\u00a0ulteriori parametri alla funzione di callback:<\/p>\n<pre class=\"lang:js decode:true\">setInterval(function(a,b) {\r\n  \/\/ codice da eseguire a intervalli regolari\r\n}, 3000, \"Ciao\", 1234);<\/pre>\n<p>Un intervallo cos\u00ec impostato passer\u00e0 alla funzione di callback: una stringa valorizzata a &#8220;Ciao&#8221;, utilizzabile attraverso la variabile <em>a<\/em>, ed il numero 1234 disponibile all&#8217;interno di <em>b<\/em>.<\/p>\n<p>Un intervallo pu\u00f2 sempre essere cancellato quando non pi\u00f9 necessario e per questo esiste <em>clearInterval<\/em>:<\/p>\n<pre class=\"lang:js decode:true\">var interval = setInterval( function()\r\n    {\r\n        \/\/ codice da eseguire ogni tre secondi\r\n    }, 3000);\r\n\r\nclearInterval(interval);<\/pre>\n<p>Inoltre ricordiamo che esiste un&#8217;ulteriore funzione legata a questo discorso in Node.js: si chiama <em>setTimeout<\/em> e permette di definire operazioni asincrone da eseguire\u00a0una sola volta allo scadere di un determinato lasso di tempo, specificato anche questo\u00a0in millisecondi:<\/p>\n<pre class=\"lang:js decode:true \">setTimeout(function () {\r\n    \/\/ questa funzione verr\u00e0 eseguita una sola volta\r\n    console.log('Sono passati dieci secondi...');\r\n}, 10000);<\/pre>\n<p>Anche in questo caso Node.js dimostra come, in maniera molto semplice, riesce a mettere a disposizione funzionalit\u00e0 importanti che permettono\u00a0di organizzare, anche a livello temporale, il nostro flusso di esecuzione.<\/p>\n<p>Alla prossima!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Capita spesso che il nostro programma per Node.js debba svolgere delle operazioni temporizzate come, ad esempio, l&#8217;aggiornamento&#8230;<\/p>\n","protected":false},"author":561,"featured_media":12967,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[1538,1649,1537],"class_list":["post-12485","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial-pratici","tag-javascript","tag-javascript-developers","tag-node-js"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12485"}],"version-history":[{"count":3,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12485\/revisions"}],"predecessor-version":[{"id":12969,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12485\/revisions\/12969"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/12967"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}