2012-05-30 24 views
0

我有两个处理程序:onSuccess和onFailure,但我有时需要(当服务器决定时),以防止它们中的任何一个运行。我知道我可以从.pipe()中返回一些“忽略”,并在.done().fail()处理程序中测试它,但有没有更优雅的方式,例如在.pipe()内调整this中的某些内容?Can Deferred.pipe()可以阻止后续的.done和.fail的调用吗?

回答

1

您能否提供您的案例的更多细节?

onFailure什么时候应该被调用?如果你的服务器调用失败了,你怎么能够知道你是否需要在你问的时候调用什么或什么都不需要?

如果我明白你的问题,你想避免在所有方法onSuccessonFailure中有一个“if”语句。一种方法可以是添加一个中间的.pipe调用并返回一个新的承诺,具体取决于您的服务器答案以做或不做。

+0

你是不是要在'.pipe()'中返回'$ .Deferred()'?像:'def.pipe(...){if(break_the_chain)return $ .Deferred(); ''? – Tar

+0

是的,类似的东西。这个解决方案的问题是,如果你的服务器调用失败,你不能切换服务器应答,或者在你的第一个延迟的“失败”中执行。我需要更多关于“切换”条件或服务器调用的信息,以便为您提供更好的代码示例。 – Mordhak

+0

这是我目前的解决方案 - 返回'$ .Deferred()'并且不做任何事情。希望没有内存泄漏或什么东西(因为这些返回延迟不会解决/拒绝..) – Tar

相关问题