Thread killen

BlubBlub

Mitglied
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

<html>
	<head>
		<title> HTML Testseite</title>

		<script type='text/javascript'>		
		var bootstrapIErangeScript = function(myWin){
		
			var ierangeScript = myWin.document.createElement("script");
			ierangeScript.type = "text/javascript";
			ierangeScript.src= '../ierange-m2.js';
			myWin.document.getElementsByTagName("head")[0].appendChild(ierangeScript);
		
			IErangeScriptLoadTest(myWin);
		}
		
		var IErangeScriptLoadTest = function(myWin){
			if(typeof(myWin.getSelection) == 'undefined')	
			{
				myWin.setTimeout(function(){IErangeScriptLoadTest(myWin);}, 100);
				alert('Thread nicht gekillt');
			}
		}
		
		bootstrapIErangeScript(window);
		alert('Hier gehts erst weiter nachdem ierange-m2.js geladen wurde');
		</script>
	</head>
	
	<body>
		
    </body>
</html>

Hi weiß jemand, wie man in JavaScript einen Thread vorzeitig beenden kann?
Wenn die Funktion IErangeScriptLoadTest() aufgerufen wird und die Datei ierange-m2.js noch nicht geladen ist, was mit
Code:
if(typeof(myWin.getSelection) == 'undefined')
festgestellt wird soll sich die Funktion rekursiv nach 100 ms nochmal aufrufen.
Das Problem ist nun, dass der Code nach
Code:
myWin.setTimeout(function(){IErangeScriptLoadTest(myWin);}, 100);
sofort weiter ausgeführt wird, und die verzögert rekursiv aufgerufene Funktion erst gestartet wird sobald mindestens 100 ms vergangen sind und der vorige thread seine Aufgaben abgearbeitet hat.
Wie schafft man es in JavaScript einen Thread vorzeitig zu beenden, so dass im obigen Beispiel der alert Aufruf mit 'Thread nicht gekillt' nie aufgerufen wird?
 
Es gibt keine Threads in JavaScript (von https://developer.mozilla.org/en/Using_web_workers ist jetzt ja nicht die Rede).

Da JavaScript event-basiert ist, ist die Lösung ganz einfach. Verpass deinen beiden Funktionen einen zweiten Parameter (ein Callback). Diese Funktion rufst du dann auf, sobald dein Test erfolgreich ist und dort führst du dann deinen Code weiter aus.

Aber kannst du in deinem Fall nicht einfach sowas machen?

Javascript:
ierangeScript.onload = function() {
    alert('fertig geladen');
};

http://stackoverflow.com/questions/4845762/onload-handler-for-script-tag-in-internet-explorer
 
Zurück