今天我正在使用链式函数调用处理一个宠物项目,我很好奇我是如何检测链中的最后一个函数何时执行的。例如:
func1('initial data').func2().func3().func4();
在func2-4完成“初始数据”处理后,我想检测func4何时完成。因为func4()并不总是链中的最后一个函数,例如它可以以.func3()或.func5()结尾,或者我可以根据我想要做的事情混合我的函数调用,我正在尝试一种方法来检测不再进行函数调用但是我没有走得太远。
答案 0 :(得分:5)
你不能。
此外,如果他们没有链接:
var v = func1('initial data');
v = v.func2();
v = v.func3();
v = v.func4();
您认为最后一项功能是什么?每个函数都是它自己的链中的最后一个函数,但是如果你在每个步骤之后完成某个函数,那么它将无效。
只需创建一个您最后调用的函数来完成该过程。
答案 1 :(得分:3)
传统方法是在最后一行之后将你想做的事情放在下一行:
func1('initial data').func2().func3().func4();
allFunctionsDone();
)
答案 2 :(得分:3)
您可以编写音序器,这将帮助您为您完成此操作。不是执行直接调用,而是移动函数的名称并逐个调用它们。像这样的东西
executeSequence(func1('init_dat'),[
'func2',
'func3',
'func4'
]);