0
我有两个处理程序:onSuccess和onFailure,但我有时需要(当服务器决定时),以防止它们中的任何一个运行。我知道我可以从.pipe()
中返回一些“忽略”,并在.done()
和.fail()
处理程序中测试它,但有没有更优雅的方式,例如在.pipe()
内调整this
中的某些内容?Can Deferred.pipe()可以阻止后续的.done和.fail的调用吗?
我有两个处理程序:onSuccess和onFailure,但我有时需要(当服务器决定时),以防止它们中的任何一个运行。我知道我可以从.pipe()
中返回一些“忽略”,并在.done()
和.fail()
处理程序中测试它,但有没有更优雅的方式,例如在.pipe()
内调整this
中的某些内容?Can Deferred.pipe()可以阻止后续的.done和.fail的调用吗?
您能否提供您的案例的更多细节?
onFailure
什么时候应该被调用?如果你的服务器调用失败了,你怎么能够知道你是否需要在你问的时候调用什么或什么都不需要?
如果我明白你的问题,你想避免在所有方法onSuccess
和onFailure
中有一个“if”语句。一种方法可以是添加一个中间的.pipe
调用并返回一个新的承诺,具体取决于您的服务器答案以做或不做。
你是不是要在'.pipe()'中返回'$ .Deferred()'?像:'def.pipe(...){if(break_the_chain)return $ .Deferred(); ''? – Tar
是的,类似的东西。这个解决方案的问题是,如果你的服务器调用失败,你不能切换服务器应答,或者在你的第一个延迟的“失败”中执行。我需要更多关于“切换”条件或服务器调用的信息,以便为您提供更好的代码示例。 – Mordhak
这是我目前的解决方案 - 返回'$ .Deferred()'并且不做任何事情。希望没有内存泄漏或什么东西(因为这些返回延迟不会解决/拒绝..) – Tar