首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我理解使用Rx扩展,但这里面的推送模型是什么?

我理解使用Rx扩展,但这里面的推送模型是什么?
EN

Stack Overflow用户
提问于 2011-09-09 11:46:36
回答 1查看 141关注 0票数 0

这是我的代码,它监控鼠标在mouseleftbuttondown之后的移动,直到mouseleftbuttonup:

代码语言:javascript
复制
var downs = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonDown");
var ups = Observable.FromEventPattern<MouseEventArgs>(this, "MouseLeftButtonUp");

var moves = Observable.FromEventPattern<MouseEventArgs>(this, "MouseMove").SkipUntil(downs).TakeUntil(ups).Repeat();
moves.Subscribe(me => {
     Point pt = me.EventArgs.GetPosition(null);
     tbPoints.Text += "X :" + pt.X + " Y :" + pt.Y + "\t";
});

一切都很顺利,但我不明白的是,这里面的推是什么?我读到IEnumerable遵循PULL模式,IObservable遵循PUSH模式。这里面的push到底是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-09 12:22:11

在此代码中,事件是推送的。当事件发生时,您已转换为observable的所有各种鼠标事件都会将事件数据推送到代码中。

当一些数据源告诉数据的消费者这里有更多的数据要处理时,这就是推模式,当你向数据源请求数据时,这就是拉模式。事件是推送模型的第一类示例。

在Subscribe方法之后,您的下一行代码将开始执行,因为使用Subscribe时,只要有一些数据(在本例中是鼠标事件)可用时,您已经要求推送数据源告诉您的代码(这将在将来发生,因此subscribe不会阻塞)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7356965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档