审核以下主题后:
ColdFusion 9 Dynamic Method Call
我仍然有一个关于错误的问题。 我做了一个例子试图说清楚:
我想使用一个可变命名的函数。 (但这是不我遇到的问题,我可以运行一个可变命名的函数)
我认为它是未定义的,因为service2的方法是从service1的上下文中调用的,并且无法调用service1中的方法,因为service1已被锁定"等待首先是service2的返回值。
除非没有解决方法,否则我希望将方法保留在原来的位置。我能正确理解这个问题吗?
使用CF16和Framework1。
答案 0 :(得分:0)
由于我可以使用快速解决方案,我会发布我想出的一些内容,但是我还在寻找一个最佳实践"一种建议。
Service1现在在service2中调用一个新方法,比如" chooseFunctionToRun"。
function chooseFunctionToRun(funcName,param1,param2){
var functionToRun = this[funcName];
return functionToRun(param1,param2);
}
现在,无论functionToRun
评估为(例如MethodA
),都可以从Service1中自由调用方法,而不会定义Service1。
它似乎只是一种关注点的分离"对于代码,资产从Service1移动到Service2,因此Service2可以决定要运行的变量函数。仍不确定为什么会这样。任何评论欢迎。
<强>更新强> Alex建议使用CFInvoke,它更干净。
function chooseFunctionToRun(funcName,param1,param2){
invoke("",funcName,{arg1=param1,arg2=param2});
}