当一个函数从其中调用另一个函数时是否会停止处理?

时间:2010-12-18 02:26:27

标签: coldfusion

查看CFC中的以下功能(我正在使用ColdFusion 9)。

假设oldObject is true和那个it is type 1,ColdFusion会一直持续到函数结束并创建新对象,或者它在<cfset respond(result=false)>上“破灭”并中止任何在功能中进一步处理?

<cffunction name="myFunction" access="private">

   <cfargument name="key">

   <cfset oldObj = model("myModel").findOne(arguments.key)>
   <cfset local.data = 1>

   <cfif isObject(oldObj)>

      <cfif oldObj IS 1>
         <cfset respond(result=false)>
      <cfelse>
         <cfset local.data = 2>
      </cfif>

   </cfif>

   <cfset newObj.new(local.data)>

<cffunction>

这个想法是这样的:

  1. 如果oldObject(1)存在且(2)属于类型1,则会破坏并且不执行任何操作。
  2. 如果oldObject存在且不是类型1,则修改local.data并创建新对象。
  3. 如果oldObject不存在,只需使用未修改的local.data创建新对象。
  4. respond()函数只是通过JSON结构向用户返回数据。我省略了很多代码,因为这是一个理论问题。

1 个答案:

答案 0 :(得分:2)

您的算法一直持续到函数的末尾。只有<cfreturn>才会在结束前退出该函数。因此总是会<cfset newObj.new(local.data)>到达。

要输出内联JSON(即<cfoutput>#json#</cfoutput>。),请确保respond()未指定<cffunction name="respond" output="false" ...>

注意,假设这些函数所在的较大对象是有状态的,则更简洁的方法是使用适当的客户端调用方法。让对象在内部拼凑响应作为其状态的一部分。最后,客户端调用getResponse()函数的行。