2011-09-10 18 views
17

Questo è un "thread" in base a javascript, ma il codice non sembra adattarsi al modello a thread convenzionale.Javascript Crea nuovo "Thread"

E 'possibile rendere questo codice più chiaro, per quanto riguarda il concetto di thread?

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

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

C'è qualche altro modo per diramano?

risposta

27

In pratica si sta semplicemente prendendo la chiamata a test fuori dal flusso normale e il motore eseguirà la funzione ogni volta che si adatta, il prima possibile. Ciò significa che stai eseguendo textin modo asincrono.

Per rendere il codice più chiaro, si potrebbe creare una funzione con un nome significativo, che fa lo stesso:

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

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

Se si desidera avere discussioni reali, uno sguardo ai web workers.

+0

Ho solo bisogno di eseguire in modo asincrono, i thread non sono necessari. Grazie! – skeggse

+2

I Web worker non sono un'opzione per la maggior parte delle applicazioni Web (vedi link) Fondamentalmente, IE 10 è la prima versione a supportarlo. http://caniuse.com/webworkers –

+1

Un sacco è cambiato dal commento di @ komma8.komma1. Ora puoi usare i web worker in quasi tutti i browser! –

Problemi correlati