2011-09-10 15 views
17

Jest to "wątek" zgodny z javascript, ale kod nie pasuje do konwencjonalnego modelu z gwintem.Javascript Utwórz nowy "Wątek"

Czy jest możliwe uczynienie tego kodu jaśniejszym, w odniesieniu do pojęcia wątku?

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

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

Czy istnieje inny sposób rozgałęzienia?

Odpowiedz

27

Zasadniczo po prostu odbierasz połączenie z test poza normalnym przepływem, a silnik wykona tę funkcję, gdy tylko będzie pasował, tak szybko, jak to możliwe. Oznacza to, że wykonujesz textasynchronicznie.

aby kod wyraźniejszy, można utworzyć funkcję ze znaczącą nazwę, która robi to samo:

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

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

Jeśli chcesz mieć prawdziwe wątki, rzucić okiem na web workers.

+0

Po prostu muszę działać asynchronicznie, wątki nie są konieczne. Dzięki! – skeggse

+2

Pracownicy WWW nie są opcją dla większości aplikacji internetowych (patrz link) Zasadniczo IE 10 jest pierwszą wersją, która ją obsługuje. http://caniuse.com/webworkers –

+1

Wiele się zmieniło od czasu komentarza @ komma8.komma1. Teraz możesz używać robotów sieciowych w prawie wszystkich przeglądarkach! –

Powiązane problemy