2013-05-09 13 views
13

Sono il seguente codice che funziona benissimo in Chrome (V8), ma non all'interno del nodo:SetTimeout in Node.js

var id; 
id = setTimeout("TimeoutHandler()", 10); 
console.log ('SET'); 

function TimeoutHandler() 
{ 
    clearTimeout(id); 
    console.log ('CLEAR'); 
} 

uscita Chrome:

SET 
CLEAR 

Nodejs uscita:

SET 
timers.js:110 
    first._onTimeout(); 
     ^
TypeError: Property '_onTimeout' of object [object Object] is not a function 
    at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 

Qualche idea, perché? Grazie

+0

Interessante che NodeJS non digita il controllo dell'argomento. Potrebbe fornire un messaggio di errore più chiaro se lo ha fatto. –

risposta

23

A differenza della maggior parte dei browser, setTimeout in node.js non accetta un parametro stringa. Devi passargli una funzione. Ad esempio:

function TimeoutHandler() 
{ 
    clearTimeout(id); 
    console.log ('CLEAR'); 
} 

var id; 
id = setTimeout(TimeoutHandler, 10); 
console.log ('SET');