2011-04-16 36 views
1

假设我有一个数组状物体,其允许链接,像这样的方法:最终化/后处理链方法

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

有之后执行代码最后一种方法在链中具有一方式已经处理 - 无需手动追加单独的.finalize()(或end/execute/...)方法调用?

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

回答

1

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

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

:基于评论编辑]

if (finalizer){ 
    finalizer(); 
} 

另一种方法可以是,以允许一个终结状态,于是在.filter(condition),的condition内容定义需要最后确定。

喜欢的东西(我不知道你的病情的类型,只是胡编):

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

嗯,是的,但是这不是从一个附加方法调用很大的不同 - 我很好奇是否完全可以避免这个手动步骤。 – AnC 2011-04-16 07:47:07

+0

查看我的编辑... – KooiInc 2011-04-16 07:54:28

+0

我感谢您的输入 - 但是,将终结标志/触发器移入条件似乎与添加尾随方法调用没有什么不同。 (条件将是普通的事情,如“> 3”或“以'foo'开头”) – AnC 2011-04-16 11:33:50