Iniziamo ad utilizzare le funzioni Javascript

In questa lezione vedremo come sfruttare alcune API JavaScript di nostra conoscenza nel codice Node.js attraverso degli esempi molto semplici.

setTimeout e setInterval

La nuova versione del server sarà la seguente

 

Vediamo quali sono le novità: all’inizio creiamo il server come nel caso precedente. Gli unici cambiamenti si trovano perciò all’interno della funzione onRequest. Qui abbiamo inserito le due funzioni JavaScript setTimeout e setInterval. Assumendo di rivolgerci a chi già conosce JavaScript non entriamo nel dettaglio di queste funzioni, limitandoci a ricordare che la prima (setTimeout) specifica una funzione callback da eseguirsi dopo un certo ritardo, che nel nostro caso è pari a 5000 ms (5 secondi). La seconda (setInterval) invece permette di ripetere in modo ciclico lo stesso codice, nel nostro caso ogni 1000 ms (1 secondo). Ciò significa che il blocco

 

 

verrà ripetuto ad oltranza ogni secondo.

Il risultato sarà il seguente: alla prima richiesta inviata al server (ad esempio via browser all’indirizzo http://localhost:8080) entreremo nella funzione onRequest, eseguendo tutto il codice contenuto al suo interno. Per effetto dell’architettura asincrona di Node.js (ispirata da JavaScript) le due funzioni setTimeout e setInterval verranno eseguite subito, mentre le callback “al loro interno” verranno eseguite nei tempi dichiarati come argomento. Otterremo quindi la scrittura per cinque volte del testo “Hello World”, come specificato dalla setInterval, e solo dopo chiuderemo la trasmissione dei contenuti come indicato dalla funzione setTimeout.

L’esempio permette di chiarire il comportamento di Node.js. Innanzitutto notiamo che in questo caso l’ordine con il quale compaiono le due funzioni setTimeout e setInterval è ininfluente ai fini del risultato: ciò è dovuto al comportamento asincrono del framework, per cui l’ordine di esecuzione viene definito dai parametri temporali (5 secondi e 1 secondo). In secondo luogo osserviamo che il risultato non si comporta come il normale HTML. Ciò è dovuto al fatto che abbiamo inviato al browser una risposta “grezza”, senza specificare alcun markup. Per questo motivo il browser probabilmente visualizzerà il risultato usando il quirks mode.