2014-09-30 90 views
3

我在Grails中有一個PromiseList,它有一個Promise列表。如果我以超時價格申請價值,如果超時停止承諾列表,我是否仍會得到非超時期貨的結果?有沒有什麼辦法讓PromiseList的結果超時

+0

簡短的回答是否定的。你不會得到任何結果,因爲超時會導致異常被拋出,因此onComplete不會被調用到promise列表中。 – 2014-09-30 19:34:39

+0

你知道嗎?如果是這樣,請將此作爲回答提交 – monksy 2014-09-30 19:42:01

回答

1

不幸的是,簡短的回答是「不,當您的承諾列表中的某些承諾成功並且一次或多次失敗時,無法獲得部分結果。」這是因爲承諾列表被視爲整個單元成功或失敗。任何異常(包括超時)都將導致調用onError而不是onComplete

唯一的選擇是,如果您需要不依賴於其他承諾的單個結果,則使用單個承諾而不是列表。

+0

有沒有辦法讓整個團隊獲得最長的等待時間? 看起來像一個承諾的列表,我所有的說.get(30分鐘)5次將導致5 * 30分鐘的上限。 – monksy 2014-09-30 20:02:55

+0

不,每個人最多可以有30分鐘的時間,而實際上你最需要關心的是最低限度。例如。如果超過20,則30,30,20將導致異常。我假設你使用Async Promises而不是Sync Promises(例如onComplete/onError vs waitAll),對嗎? – 2014-09-30 20:31:16

+0

這將是使用異步承諾是的。 – monksy 2014-09-30 20:52:59

相關問題