Ermitteln Sie den Wert von Variablen, die in cfloop ausgeführt werden, mithilfe des cfthread-Joins
-
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 !!
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.