Ich möchte Thread auf der Seite trennen, um das Einfrieren von GUI zu verhindern. Dazu führe ich die Funktion aus, die gui in einem anderen Thread mit setTimeout einfriert, aber immer noch einfriert.Laufender Code in einem anderen Thread in Javascript
Der Code und jsbin Link ist unter:
<!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>
Das wird noch im selben Thread ausgeführt werden. Alles wird in demselben Thread ausgeführt. Die einzige Ausnahme ist WebWorker. – mishik
aber jquery ajax Anfragen funktionieren in einem anderen Thread, wenn wir 'async: true' sagen. Ich suche jetzt nach guten Informationen über Webworker. Ich muss etwas in anderen Threads ausführen, während gui noch berührbar ist und andere Daten aus dem Netzwerk lädt. – uzay95
Der Rückruf für diese Ajax-Anforderung wird weiterhin im selben Thread ausgeführt. 'async: true' bedeutet nur, dass der Browser einige Zeit damit verbringen kann, sich mit anderen Aufgaben zu beschäftigen, während er auf Ajax-Anrufergebnisse wartet. – mishik