XHR in forschleife möglich?

  • XHR in forschleife möglich?

    irgendwie steh ich momentan aufn Schlauch

    Ich habe ne sehr eigenartige Konstruktion, aber mir fällt keine bessere ein.

    Ich habe einen Linkarray, in dem Links gespeichert sind, logisch oder?
    Diesen Linkarray möchte ich durchgehen. Also mir den Inhalt laden und dann überprüfen, ob im response ein bestimmtes Element ist.

    Quellcode

    1. this.linkList=links;
    2. for (j=0; j <= thislinkList.length; j++){
    3. this.loader+'j' = new ContentLoader(this.reqURL, function(){ref.checkInterwiki(this.req, ref.reqURL, loader+=ref.i);});
    4. }


    es scheint mir völlig klar, dass ich hier völligen Schwachsinn geschrieben habe.
    Aber wie kann man dieses Problem lösen. Ich möchte den Response an eine bestimmte Funktion (checkInterwiki) schicken.
    Was ich nicht möchte, ist den Contentloader zu überschreiben, aber bringt da dieser Ausdruck (this.loader+'j') etwas. meines wissen ist das nicht möglich.
    Ich wäre für nen theoretischen Ansatz dankbar.

    weil mit nem for-loop muss ich es ja machen. wenn ich aber (loader+'j') nicht machen kann, überschreibe ich die Referenz ja ständig.

    CHeers Cyb081
  • ok das mit dem Variablen VariablenNamen hab ich gepackt:

    Quellcode

    1. for(i=0; i <= this.Links.length-1; i++){
    2. var ref = this;
    3. var j= {wert:'this.loader'+i};
    4. this.reqURL = this.Links[i].value.link;
    5. j['wert'] = new net.ContentLoader(this.reqURL, function(){ref.checkInterwiki(this.req, ref.reqURL);});
    6. }


    problem is aber irgendwie trotzde, dass es nicht so funktioniert, wie ich es mir gedacht habe. Die Funktion checkInterwiki wird zwar entsprechend oft aufgerufen.
    Das reqObjekt ist aber immer gleich :(

    muss ich hier (ref.checkInterwiki(this.req, ref.reqURL);) etwas anderes übergeben?
  • ok es scheint doch zu funktionieren. allerdings kann ich nicht einfach ref.reqURL meiner callbackfunktion übergeben. Da die zum Zeitpunkt des callbacks natürlich dann schon wieder überschrieben ist.

    Dann vielleicht noch ne Frage, wie komme ich an die reqUrl des XHR-objektes?

    die steckt ja irgendwie im channel.name
    wenn ich req.getResponseHeader mache, wird das Objekt irgendwie gelöscht.
  • Wie oft rufst du die Schleife denn auf, dass du Angst hast, dass irgendwas überschrieben wird?
    Da du die Variable erst in der Schleife initialisierst, geht die Variable außerhalb des Blocks/der Schleife sowieso verloren.

    Aber hier noch ne Alternative: warum nimmst du nicht die Uhrzeit als index?

    Quellcode

    1. var x = Array();
    2. for(var i=0; i<10; i++) {
    3. var idx = new Date().getMilliseconds() % 10000;
    4. x[idx] = new net.ContentLoader....;
    5. }