2012-04-09 27 views
25

Tenía curiosidad por saber qué devuelve setTimeout. Así que hice una prueba rápida:¿Qué devuelve setTimeout?

var thing = setTimeout(function(){},1); 

Y lo que me sorprende es que me dio un número. 1351 Cada vez es diferente.

Entonces, ¿realmente todo lo que devuelve es un número? Entonces, ¿puedo hacer esto también?

clearTimeout(1351); 

muy confuso ...

+0

Su mango del temporizador ID: http://www.w3.org/TR/Window/#timers –

Respuesta

30

Es un mango (un identificador único). Cuando crea un tiempo de espera, el tiempo de ejecución de JavaScript asocia un "identificador" de enteros con el tiempo de espera que creó, y puede identificar ese tiempo de espera mediante el identificador setTimeout() devuelve. Cuando ejecute clearTimeout(), sabrá de qué tiempo está hablando al mirar el único identificador que pasa.

9

Puede considerarlo como timerID, que identifica un temporizador de manera única, de modo que puede reiniciar por clearTimeout(timerID)

8

puede ser un Object, he comprobado con node.js:

var sto = setTimeout(
    function(){console.log('ping');}, 
    1000 
); 

console.log(sto); 

La salida es:

{ _idleTimeout: 1000, 
    _idlePrev: 
    { '0': [Function: listOnTimeout], 
    _idleNext: [Circular], 
    _idlePrev: [Circular], 
    msecs: 1000 }, 
    _idleNext: 
    { '0': [Function: listOnTimeout], 
    _idleNext: [Circular], 
    _idlePrev: [Circular], 
    msecs: 1000 }, 
    _idleStart: 2413359232, 
    _onTimeout: [Function], 
    _repeat: false, 
    domain: 
    { domain: null, 
    _events: { error: [Function] }, 
    _maxListeners: undefined, 
    members: [] } } 
+1

Wow, esto es interesante. –

0

es un ID de tarea (prefiero pensar que es un ID de tarea en lugar de un ID de tiempo de espera que confunde a todos).

imagine que tiene que iniciar una función predeterminada: "f_cup_of_tea", que cualquier persona normal terminaría necesitando después de 5 minutos en su sitio web. :

tea_Task_ID = window.setTimeout(f_cup_of_tea, (5*60*1000), 15, 2); 

como: función f_cup_of_tea (milk_ml, azúcar) {....}

pero por desgracia, con el diez segunda tarde, un usuario psychadelic prefieren para conseguir algo diferente de todo el mundo, y elegir un bad_tequila ...

debe cancelar el delicioso "f_cup_of_tea", programado dentro de los cinco minutos ... afortunadamente JavaScript tienen el pensamiento de este tipo de problema y se puede utilizar:

window.clearTimeout(tea_Task_ID); 

(pero se ejecuta solo si "f_cup_of_tea" aún no se han iniciado).

lado, puede iniciar:

tequila_Task_ID = window.setTimeout(f_bad_tequila, (5*1000), 0); // for in 5s, with zero ice... 
+0

Para mí, creo seriamente que mi respuesta es mucho mejor que todas las demás, porque es divertida y educativa :) –