coldfusion(railo)和cfthread没有像我期望的那样工作

时间:2014-07-18 09:27:10

标签: 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"/>

我期待local.apartmentList成为ID的大列表,但它返回空。这几乎就像是跳过了线程中的代码一样。谁能发现我做错了什么?

1 个答案:

答案 0 :(得分:4)

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

因此,您的<cfthread>数据块不会知道local.pageNo等变量。

记录<cfthread>处理中发生的任何错误,因此您需要查看日志以查看正在出现的错误。