system.reactive 共享一个订阅(发布)
示例
给定一个IObservable<Offer>的offers从商家购买或以固定价格出售某些类型的项目,我们可以按照如下匹配对买家和卖家的:
var sellers = offers.Where(offer => offer.IsSell).Select(offer => offer.Merchant); var buyers = offers.Where(offer => offer.IsBuy).Select(offer => offer.Merchant); var trades = Observable.Zip(sellers, buyers, (seller, buyer) => new Trade(seller, buyer));
问题在于,每个订阅trades将订阅offers两次。我们可以sellers和buyers共享一个单一订阅offers使用Publish:
var trades = offers.Publish(_offers =>
{
var sellers = _offers.Where(offer => offer.IsSell).Select(offer => offer.User);
var buyers = _offers.Where(offer => offer.IsBuy).Select(offer => offer.User);
return Observable.Zip(sellers, buyers, (seller, buyer) => new Trade(seller, buyer));
});
热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短