Last active
August 29, 2015 14:01
-
-
Save fversnel/148d5b1bf73a2af0e901 to your computer and use it in GitHub Desktop.
Difference between Select and Observable.Create
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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