Ermitteln Sie den Wert von Variablen, die in cfloop ausgeführt werden, mithilfe des cfthread-Joins

StackOverflow https://stackoverflow.com/questions/3248513

  •  15-09-2020
  •  | 
  •  

Frage

Danke für Ihre Antwort!!Aber ich schaffe es immer noch nicht.Fehler, den ich erhalte, ist "Element Objget1 ist in einem Java -Objekt vom Typ Klasse coldfusion.

Unten ist mein vollständiger Code.Ich möchte nur den Wert jedes Threads ausgeben, der CFhttp-Informationen enthält.

http://www.google.com/search?" & "q=Vin+Diesel" & "&num=10" & "&start=") />

<cfset intStartTime = GetTickCount() />

<cfloop index="intGet" from="1" to="10" step="1">

    <!--- Start a new thread for this CFHttp call. --->
    <cfthread action="run" name="objGet#intGet#">

        <cfhttp method="GET" url="#strBaseURL##((intGet - 1) * 10)#" useragent="#CGI.http_user_agent#" result="THREAD.Get#intGet#" />

    </cfthread>

</cfloop>

<cfloop index="intGet" from="1" to="10" step="1">

    <cfthread action="join" name="objGet#intGet#" />
    <cfdump var="#Variables['objGet'&intGet]#"><br />

</cfloop>

und wenn ich es nach dem Thread-Joining innerhalb der Schleife verwende.Ich bekomme die gewünschten Ergebnisse, danke !!

War es hilfreich?

Lösung

Es passiert hier zwei Probleme.

Wie von Zugwalt erwiesen wird, müssen Sie explizit in Variablen übergeben, die Sie im Rahmen Ihres Threads verweisen möchten.Er hat die CGI-Variable verpasst, dass es nicht in Ihrem Thread existiert.Wir passieren also genau das, was wir im Thread, UserAgent, Strbaseurl und Intget verwenden müssen.

Zweites Problem, nachdem er angeschlossen, sind Ihre Threads nicht in variabler Geltungsbereich, sie befinden sich im CFThread-Umfang, also müssen wir sie von dort lesen.

korrigierter Code:

generasacodicetagpre.

Andere Tipps

Im Allgemeinen werden Variablen ohne Gültigkeitsbereich in die Datei eingefügt Variables Geltungsbereich, sodass Sie die Strukturklammernotation verwenden können, um auf sie zu verweisen:

Variables['objGet#intGet#']

oder

Variables['objGet'&intGet]

Beide machen im Grunde das Gleiche – nur unterschiedliche Syntaxen.

Der Codelauf in einem CFThread-Tag hat einen eigenen Umfang.Versuchen Sie, die Variable zu übergeben, auf die Sie möchten, dass sie als Attribut zugreifen soll.Ich benenne es gerne etwas anderes, nur um mir zu helfen, den Track zu behalten.

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top