2011-09-10 20 views
17

Este es un "hilo" de acuerdo con javascript, pero el código no parece ajustarse al modelo roscado convencional.Javascript Crear Nuevo "Hilo"

¿Es posible hacer este código más claro, con respecto al concepto de un hilo?

function test() { 
    alert("Test"); 
} 

// this creates a new "thread," but doesn't make much sense to the untrained eye 
setTimeout(test, 0); 

¿Hay alguna otra forma de ramificación?

Respuesta

27

Básicamente está tomando la llamada a test fuera del flujo normal y el motor ejecutará la función siempre que le sea posible, tan pronto como sea posible. Eso significa que está ejecutando textde forma asíncrona.

Para hacer el código más claro, se puede crear una función con un nombre significativo que hace lo mismo:

function executeAsync(func) { 
    setTimeout(func, 0); 
} 

executeAsync(function() { 
    alert("Test"); 
}); 

Si usted quiere tener discusiones reales, echar un vistazo a web workers.

+0

Solo necesito ejecutar asincrónicamente, los hilos no son necesarios. ¡Gracias! – skeggse

+2

Los trabajadores web no son una opción para la mayoría de las aplicaciones web (ver enlace) Básicamente, IE 10 es la primera versión que lo admite. http://caniuse.com/webworkers –

+1

Mucho ha cambiado desde el comentario de @ komma8.komma1. ¡Ahora puedes utilizar web workers en casi todos los navegadores! –

Cuestiones relacionadas