结束/后处理链式方法

finalizing / post-processing chained methods

本文关键字:方法 后处理 结束      更新时间:2023-09-26

假设我有一个类似数组的对象,它允许像这样链接方法:

var ds = new DataSet(items);
var subset = ds.filter(condition1).filter(condition2);

是否有一种方法在链中的最后一个方法被处理后执行代码 -而无需手动追加单独的.finalize()(或end/execute/…)方法调用?

我相信我以前在什么地方见过这个,但我不记得细节了。也许未来/承诺/延迟会在这里使用-但我真的不知道如何,因为我总是需要"展望未来"来确定方法调用是否是链中的最后一个。

如果您控制filter方法,可能需要添加一个finalize参数?

.filter(condition,[some finalizer function]);

in filter:

if (finalizer){
   finalizer();
}

[基于注释编辑]

另一种方法是允许终结器条件,因此在.filter(condition)中,condition的内容定义了终结的需要。

类似于(我不知道你的情况,只是瞎编的):

if (condition.match('f=true')) {
  finalizer();
}