Skip to content

Instantly share code, notes, and snippets.

@fversnel
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fversnel/148d5b1bf73a2af0e901 to your computer and use it in GitHub Desktop.
Save fversnel/148d5b1bf73a2af0e901 to your computer and use it in GitHub Desktop.
Difference between Select and Observable.Create
void Start ()
{
var onNext = UnityObservable.EveryUpdate<float>(observer =>
{
Debug.Log("on next call: " + Time.time);
observer.OnNext(Time.time);
});
var select = UnityObservable.EveryUpdate<Unit>(observer => observer.OnNext(Unit.Default))
.Select(_ =>
{
Debug.Log("select call: " + Time.time);
return Time.time;
});
Task.Factory.StartNew(() =>
{
Thread.Sleep(5000);
// Works perfectly fine since OnNext is called from the Unity thread.
onNext.Take(3).Subscribe(t => Debug.Log("OnNext" + t));
// Fails because select is called from a different thread than the Unity thread.
select.Take(3).Subscribe(t => Debug.Log("Select" + t));
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment