2014-09-30 78 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

相关问题