Chcę oddzielić wątek na stronie, aby zapobiec zamrożeniu gui. W tym celu uruchamiam funkcję, która zamrozi gui wewnątrz innego wątku z setTimeout, ale nadal zamarza.Uruchamianie kodu wewnątrz innego wątku w javascript
Kod i Link jsbin są poniżej:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"
type="text/javascript"></script>
<meta charset="utf-8" />
</head>
<body>
<div id="div1"></div>
<div id="div2"></div>
<input type="button" value="düðme" id="btn" />
<script type="text/javascript">
$("#btn").on("click",function(){
$("#div1").html(new Date());
});
$(document).ready(function(){
setTimeout(function() { count(); },1);
});
function count(){
for(var i =0;i<100000;i++){
$("#div2").html(i);
}
$("#div2").append(new Date());
}
</script>
</body>
</html>
Że nadal będą wykonywane w tym samym wątku. Wszystko zostanie wykonane w tym samym wątku. Jedynym wyjątkiem są WebWorkers. – mishik
, ale żądania ajax jquery działają w różnych wątkach, jeśli powiemy 'async: true'. Szukam teraz dobrych informacji na temat webworkerów. Muszę uruchomić coś w innych wątkach, podczas gdy gui wciąż jest dotykalny i ładuję kolejne dane z sieci. – uzay95
Callback dla tego żądania ajax nadal będzie wykonywany w tym samym wątku. 'async: true' będzie po prostu oznaczać, że przeglądarka może spędzić trochę czasu zajmując się innymi zadaniami, czekając na wyniki wywołania ajax. – mishik