2012-05-30 22 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

相關問題