CFC Undefined 具有可变定义的方法名称
CFC Undefined with variably defined method name
查看以下主题后:
ColdFusion 9 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});
}
查看以下主题后:
ColdFusion 9 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});
}