从其中调用另一个函数时,函数是否停止处理?
问题描述:
查看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>
的想法是这样的:
- 如果
oldObject
(1)存在和(2)为1型,出局并没有做任何事情。 - 如果oldObject存在且不是类型1,则修改
local.data
并创建新对象。 - 如果oldObject不存在,只需创建未修改的新对象
local.data
。
respond()函数只是通过JSON结构向用户返回数据。我省略了很多代码,因为这是一个理论问题。
答
你的算法继续到函数的结尾。只有一个<cfreturn>
会在结束之前退出该功能。所以<cfset newObj.new(local.data)>
总是会到达。
要输出JSON内联(即<cfoutput>#json#</cfoutput>
。),请确保respond()
未指定<cffunction name="respond" output="false" ...>
。
请注意,假设这些函数驻留的较大对象是有状态的,则更简洁的方法是根据需要调用客户端方法。让对象内部将响应作为其状态的一部分进行拼凑。最后,客户端沿着getResponse()
函数的行呼叫。