CFC Undefined 具有可变定义的方法名称

CFC Undefined with variably defined method name

查看以下主题后:

ColdFusion 9 Dynamic Method Call

Dynamic Method Call

我还有一个关于错误的问题。 我画了个图来说明一下:

我想使用可变命名的函数。 (但这不是我遇到的问题,我可以运行一个可变命名的函数)

我认为它返回为未定义,因为正在从 service1 的上下文中调用 service2 的方法,并且不能调用 service1 中的方法,因为 service1 是 "locked",正在等待来自 service2 的 return 值首先.

我想保留这些方法,除非没有解决方法。我对问题的理解正确吗?

使用 CF16 和 Framework1。

因为我可以使用一个快速的解决方案,所以我会 post 我想出的一些可行的方法,但我仍在寻找 "best practice" 类的建议。

Service1 现在调用 service2 中的一个新方法,比如 "chooseFunctionToRun"。

function chooseFunctionToRun(funcName,param1,param2){
   var functionToRun = this[funcName];
   return functionToRun(param1,param2);
}

现在,任何 functionToRun 的计算结果(例如 MethodA)都可以自由地从 Service1 调用方法,而无需定义 Service1。

好像只是一个"separation of concerns"的代码,资产从Service1移动到Service2所以Service2可以决定变量函数是运行。仍然不确定它为什么有效。欢迎任何评论。

更新 Alex 提出了使用 CFInvoke,这样更干净。

function chooseFunctionToRun(funcName,param1,param2){
   invoke("",funcName,{arg1=param1,arg2=param2});
}