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

coldfusion(railo)和cfthread没有像我预期的那样工作,coldfusion,railo,cfthread,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>

我以前没有使用过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列表,但它返回空的。这就好像线程中的代码只是被跳过了一样。有人能发现我做错了什么吗?

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

因此,您的
块将不知道像
local.pageNo
这样的变量是什么

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

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

因此,您的
块将不知道像
local.pageNo
这样的变量是什么


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

我预计此代码会失败;循环1..5,但从第二次迭代开始只创建
local.myResponse
。然而,您稍后引用它时,就好像它总是存在一样。我建议您查看@您的应用程序和异常日志。他们会有你的错误。我希望这个代码会失败;循环1..5,但从第二次迭代开始只创建
local.myResponse
。然而,您稍后引用它时,就好像它总是存在一样。我建议您查看@您的应用程序和异常日志。他们会有你的错误。嘿,亚当,完美的答案。我不知道有人在抛出错误。我只是假设我写的代码被绕过了。当我检查日志时,很容易调试。干杯,我想这是第一次把每个人都甩了。事实上,这周我在做一些线程方面的工作,但它让我一天中就绊倒了;-)我的观察结果使我不同意这个答案的第一段。我使用了cfthread,这样做时,我能够从主线程访问表单和变量范围中的变量;他只是说明了在线程中访问数据的最佳实践。本地作用域在线程中不可用-这是主要的一点,Adam提供了本地作用域的有效替代方案。变量作用域也可能是可行的,但是在这种情况下,表单作用域对于这段代码来说不是一个好的选择。我不知道有人在抛出错误。我只是假设我写的代码被绕过了。当我检查日志时,很容易调试。干杯,我想这是第一次把每个人都甩了。事实上,这周我在做一些线程方面的工作,但它让我一天中就绊倒了;-)我的观察结果使我不同意这个答案的第一段。我使用了cfthread,这样做时,我能够从主线程访问表单和变量范围中的变量;他只是说明了在线程中访问数据的最佳实践。本地作用域在线程中不可用-这是主要的一点,Adam提供了本地作用域的有效替代方案。变量作用域也可能是可行的,但是在这种情况下,表单作用域对于这段代码来说不是一个好的选择。