window.setTimeout => return?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • window.setTimeout => return?

    Hallo!

    Mit window.setTimeout kann ich ja eine Funktion nach x ms aufrufen. Nun habe ich eine Funktion, die mir einen Wert zurückgibt, etwa:

    function foo() {
    return "bar";
    }

    Wie komme ich jetzt an den Rückgabewert, wenn ich diese Funktion mit window.setTimeout aufrufe?

    Danke schonmal

  • #2
    Gar nicht. Du könntest ihr höchstens beim Ausführen der Funktion global speichern...

    Kommentar


    • #3
      *arrgh* das ist ja total der Mist. Habe nun nämlich folgendes Problem:

      Code:
      var response = null;
      createRequest("ajax.php", "POST", "id=1") // z.B. Holt mir eine XML vom Server und speichert die im request ab.
      alert(response) ;
      Dieser Code gibt mir "null" im Alert aus. Im Gegesatz dazu gibt mir dieser Code:

      Code:
      var response = null;
      createRequest("ajax.php", "POST", "id=1") // z.B. Holt mir eine XML vom Server und speichert die im request ab.
      window.setTimeout("alert(response)", 1);
      ein Objekt im Alert aus. Irgendwie scheint der Browser mit dem Script weiter zu sein als dass die XML überhaupt geladen wurde. Finde das recht umständlich mir 100 Funktionen bauen zu müssen (und diese mit setTimeout) aufrufen zu müssen nur um sicher zu sein dass die Daten auch alle ankommen, vorallem da 1ms auch mal zu wenig sein kann und ich immer gucken muss was wie lange geladen werden muss.

      Gibts da irgend nen Trick ne Abkürzung oder so?

      Kommentar


      • #4
        PHP-Code:
        ajax_obj.onreadystatechange
        if (ajax_obj.readyState == && ajax_obj.status == 200
        schau dir mal das tutorial an.

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          AJAX = Asynchronus Javascript and XML
          Das sagt eigentlich schon alles, denn asynchron bedeutet hier, dass das Script während des AJAX-Requests weiter ausgeführt wird. Wie Kropff schon angedeutet hat, muss du die die Serverantwort mit einer extra Funktion abfangen, die ausgeführt wird sobald die Antwort vorliegt. Aber das musst du dir dann nochmal genauer im Tutorial anschauen...

          PS: Am Anfang ist das natürlich mit den verzögerten Antworten etwas ungewohnt, weil man nicht in gewohnter Art und Weise programmieren kann. Nach einer Weile gewöhnt man sich aber daran.

          EDIT PPS: Ich will ja hier keine Werbung machen, aber wenn du vor hast AJAX-basierte Anwendungen zu entwickeln, dann schau dir mal das Prototype-Framework an. Das erleichtert so einiges
          Zuletzt geändert von Mathis; 25.07.2008, 11:31.

          Kommentar


          • #6
            Code:
            function sendPostRequest()
            {
              ...
              ajax_obj.onreadystatechange = function ()
              {  
                if (ajax_obj.readyState == 4 && ajax_obj.status == 200)
                {            
                  xml = ajax_obj.respon************ML; 
                  analysePostXml();
                }
              }  
            }
            Ja gut, der Code setzt aber voraus, dass ich sendPostRequest() eine Funktion angebe (analysePostXml()), die die Daten verarbeiten soll. Nun will ich aber je nachdem welche Datei ich aufrufe die Daten an jeweils die für sie zuständige Funktion senden.

            Kann ich, wenn readyState 4 und status 200 ist, irgendwie nen Rückgabewert erzeugen, so dass ich was derartiges machen kann:

            Code:
            var xml = sendPostRequest(...);
            if(xml) {
                ...
            }
            Wenn ich nach

            if (ajax_obj.readyState == 4 && ajax_obj.status == 200)

            ein

            return true;

            setze bekommt die Funktion ja dennoch nichts zurück.

            Oder gibts sowas wie call_user_func() (PHP) auch in JavaScript?

            @Mathias: Darauf hätte ich eigentlich auch selber kommen können. Aua, manchmal sieht man vor lauter Bäumen den Wald nicht. Ich hab mir für meine Anwendung script.aculo.us geholt, das nutzt ja auch auch prototype mit u.a.. Aber mir ist imo wichtig selber Ajax & JS zu lernen, um ben nicht auf Frameworks angewiesen zu sein, denn wenn irgendwann mal was sein sollte und so ein Framework die entsprechende Funktion nicht bietet dann bin ich auch geliefert...

            Kommentar

            Lädt...
            X