Coldfusion (railo) 和 cfthread 没有按我的预期工作

Jam*_*ett 2 coldfusion railo cfthread

我以前没有使用过 cfthread,但我使用以下代码但它不起作用。

<cfloop from="1" to="5" index="local.pageNo">

            <cfthread name="thr#local.pageNo#" threadIndex="#local.pageNo#" action="run">

                <cfif local.pageNo GT 1>
                    <cfhttp url="#local.apiURL#&page=#local.pageNo#" method="get" result="local.myResults" >
                    </cfhttp>
                    <cfset local.myResponse = deserializejson(local.myResults.filecontent)>
                </cfif>

                <cfloop from="1" to="#arrayLen(local.myResponse.result)#" index="i">
                    <cfset local.apartmentList = listAppend(local.apartmentList,local.myResponse.result[i].id & '-0')>
                </cfloop>

            </cfthread>

        </cfloop>

        <cfthread action="join" name="thr1,thr2,thr3,thr4,thr5"/>
Run Code Online (Sandbox Code Playgroud)

我期望 local.apartmentList 是一个很大的 ID 列表,但它返回空。这几乎就像线程内的代码被跳过一样。有人能发现我做错了什么吗?

Ada*_*ron 5

当您使用 时<cfthread>,这些标记中的代码不会在与其周围的代码相同的上下文中运行。因此,您需要将打算使用的任何变量传递给其中(作为标记的属性<cfthread>),或者通过请求范围“共享”它们。

所以你的<cfthread>块不会知道变量是什么local.pageNo

处理过程中发生的任何错误<cfthread>都会被记录下来,因此您需要查看日志以了解出现了哪些错误。