First()
FirstOrDefault()
BatchFrame()
Buffer()
GroupBy()
ThrottleFirst()
ThrottleFrame()
ThrottleFirstFrame()
First
取基础流里面第一个数据或者取第一个满足条件的数据,图解
执行结果
代码示例
public class No14_Mixed4 : MonoBehaviour
{
void Start()
{
var first = Observable.EveryUpdate().First(FirstCondition);
var disposable = first.Subscribe(Next, Error, Complete);
disposable.AddTo(gameObject);
}
bool FirstCondition(long frame)
{
if (frame == 100)
{
return true;
}
return false;
}
void Next(long frame)
{
Debug.LogFormat("First事件发生在{0}帧", frame);
}
void Error(Exception ex)
{
Debug.LogException(ex);
}
void Complete()
{
Debug.LogFormat("Complete");
}
}
代码解析
FirstCondition是取一个满足条件的数据,基础流包装的long类型,返回必须指定为bool类型,true为找到了第一个需要索取的数据。
FirstOrDefault
和First功能差不多,但FirstOrDefault如果是基于条件的查找,没有找到匹配的数据则返回默认的初始化值,图解同First
执行结果
代码示例
public class No14_Mixed4 : MonoBehaviour
{
void Start()
{
var first = Observable.EveryUpdate().Take(10).FirstOrDefault(FirstCondition);
var disposable = first.Subscribe(Next, Error, Complete);
disposable.AddTo(gameObject);
}
bool FirstCondition(long frame)
{
if (frame == 100)
{
return true;
}
return false;
}