给定行为对象,调用所有这些不同功能之间的实际区别是什么?

  • 第一的()
  • 最后的()
  • 最新value()
  • mostrecentvalue()
  • NextValue()
  • 单身的()
  • 取(1)

假设我理解正确,鉴于行为对象,他们都应该对同一件事做。

如果是这样,那么哪个电话是最合适的(我的意思是:最好传达我的意图)?也许是第一个还是单人?

如果没有,那么实际差异是什么?

有帮助吗?

解决方案

首先,最后一个和单身被阻止;建议使用(1)使用(1),因此您可以返回一个iObservable。链接查询操作员时,建议避免先,最后和单身,因为您退出了单子的安全性……也就是说,您的副作用是阻塞的。看 http://blogs.msdn.com/jeffva/archive/2009/12/12/09/first-last-contains-eetc-can-be-be-be-be-be-be--danger-danger--yet-yet-ectremely-use-aspx 有关此的更多信息。

根据最新版本,根据最新版本的RX,MostrecentValue和最新版本也已从最新版本中删除,因此它们正在阻止,因此唯一剩下的阻止操作员是第一,最后和单个(以及XXXODORDEFAULT变体)。

Mostrecent将返回所采样的最后一个值,就像您称之为时一样(并且需要一个初始价值来保证它永远不会等待),即“无需消耗”,而最新的等待直到值到达然后“用消耗返回” - 也就是说,如果您再次调用最新消息,它将不会返回与上一个呼叫相同的值,它将等到下一个值到达(如果有的话)。

其他提示

感谢@richardhein的出色答案。

阻止扩展方法应真正移至自己的名称空间中,因此开发人员必须专门选择将它们包括在项目(或CS文件)中。您与RX添加了很多复杂性,并且通过使用阻止方法意外地将您基本上转移回ILIST/IENUMETAR。

我认为这是RX团队犯的最大错误,我认为通过默认将它们包括在内,他们错过了RX的“成功坑”。修复此问题,我将RX称为首选API,超越了C#中的单线线程 +异步(即为什么.NET比SAVE NODEJS更强大)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top