kostenloser Webspace werbefrei: lima-city


JavaScript Funktionen parallel

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    mermadalis

    Kostenloser Webspace von mermadalis

    mermadalis hat kostenlosen Webspace.

    Guten Tag Limas,

    Ich habe ein JavaScript, bei dem zwei Funktionen gleichzeitig ablaufen sollen, die eine Funktion soll die andere, die eine While-Schleife benutzt, dann unterbrechen:

    <script type="text/javascript" language="javascript">
    var bool = true;
    
    function func_one()
    {
    	bool = false;
    }
    function func_two()
    {
    	var i = 1;
    	while ( bool )
    		i++;
    }
    </script>
    
    <button onclick="func_two()">Func_two ausl&ouml;sen</button>
    
    <button onclick="func_one()">Click</button>


    Die While-Schleife in func_two läuft so lange durch, bis die Variable bool durch func_one auf false gesetzt wird. Prinzipiell sollte das ja so funktionieren, in der Praxis durchläuft die Liste aber eine Endlosschleife, der Browser bleibt nach einer Zeit hängen. Das erkläre ich mir damit, dass die Funktionen in JavaScript nicht parallel ablaufen können.

    Gibt es hierzu eine Lösung? Vielen Dank für alle Antworten!
    mermadalis
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich würde das so lösen:
    <script type="text/javascript" language="javascript">
    var bool = true;
    
    function func_one()
    {
    	bool = false;
    }
    function func_two()
    {
    	var i = 1;
    	while ( bool==true )
    		i++;
    }
    </script>

    also die while schleife solange läuft wie bool==true ist
    :P
    kann auch sein ich ich mich das irre (habe nicht zuviel js Erfahrung
    aber viel java erfahrung
  4. Autor dieses Themas

    mermadalis

    Kostenloser Webspace von mermadalis

    mermadalis hat kostenlosen Webspace.

    Das, was du geschrieben hast, ist im Prinzip genau das gleiche Script, wie das von mir gepostete:

    "while ( bool )" entspricht "while ( bool == true )"

    Das eigentliche Problem besteht darin, dass die While-Schleife einfach alle Steuerelemente blockiert und daher auch nicht unterbrochen werden kann.

    Beitrag zuletzt geändert: 23.12.2011 13:48:15 von mermadalis
  5. g****e

    So geht das auch nicht, tut mir leid.
    Javascript ist eine SingleThread-Sprache, du kannst also eigentlich nicht paralelisieren. Intel hat allerdings eine API vorgestellt, welche vllt in Zukunft Std werden könnte, nennt sich River Tail (http://www.golem.de/1109/86524.html). Diese geht aber nur bei FireFox Nutzern mit entsprechendem Plugin.
    Man kann allerdings eine Pseudoparalelität erreichen, indem man mittels Eventhändlern, setInterval und setTimeout geschickt ein scheinbar-threading erzeugt. Dein Beispiel wäre also so durchsetzbar:

    <script type="text/javascript" language="javascript">
    function MyClass() {
    var bool = false;
    var i = 1;
    
    this.run = function() {
    if (bool) {
        i++;
        setTimeout(this.run(), 100);
    }
    }
    
    this.start = function() {
        bool = true;
        run();
    }
    
    this.stop = function() {
        bool = false;
        alert(i);
    }
    }
    
    var MeinHandler = new MyClass();
    MeinHandler.start();
    //do some Code
    MeinHandler.stop();
    </script>


    So sollte man eigentlich eine funktionierende Threadklasse gebaut haben in Javascript. Der Thread kriegt alle 100ms ein Signal sich auszuführen. Da ich das schon ne Weile nichtmehr gemacht habe garantiere ich nicht, dass der Code geht, aber so in die Richtung wird es funktionieren.

    Liebe Grüße
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!