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