1

今天我正在做一个使用链式函数调用的宠物项目,我很好奇如何检测到链中最后一个函数何时执行。例如:

func1('initial data').func2().func3().func4();

在 func2-4 完成对“初始数据”的处理后,我想检测 func4 何时完成。由于 func4() 并不总是链中的最后一个函数,例如它可以在 .func3() 或 .func5() 处结束,或者我可以根据我想要做的事情混合我的函数调用,我正在尝试想办法检测没有更多的函数调用正在执行,但我并没有走得太远。

4

3 回答 3

5

你不能。

此外,如果它们没有被链接:

var v = func1('initial data');
v = v.func2();
v = v.func3();
v = v.func4();

您认为最后一个功能是什么?每个函数都是它自己链中的最后一个函数,但如果你在每一步之后完成某些事情,那将是行不通的。

只需创建一个您最后调用的函数即可完成该过程。

于 2009-12-19T22:05:58.890 回答
3

传统的方法是将你想做的任何事情放在下一行的最终函数之后:

func1('initial data').func2().func3().func4();
allFunctionsDone();

;)

于 2009-12-19T22:02:48.027 回答
3

您可以编写音序器,这将帮助您为您执行此操作。与其直接调用,不如将函数的名称一一调用。像这样的东西

executeSequence(func1('init_dat'),[
    'func2',
    'func3',
    'func4'
]);
于 2009-12-19T22:03:47.333 回答