最终/后处理链式方法

时间:2011-04-16 07:26:34

标签: javascript deferred-execution

假设我有一个类似于Array的对象,允许链接这样的方法:

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

是否有办法在链接中的最后一个方法处理后执行代码 - 无需手动添加单独的.finalize()(或end / {{ 1}} / ...)方法调用?

我相信我在某个地方见过这个,但我不记得细节了。也许期货/承诺/延期在这里会有用 - 但我真的不知道如何,因为我总是最终需要“展望未来”以确定方法调用是否是链中的最后一个。 / p>

1 个答案:

答案 0 :(得分:1)

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

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

if (finalizer){
   finalizer();
}

[根据评论进行修改]

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

类似的东西(我不知道你的病情类型,只是搞砸了):

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