AsycSubject<Unit>() sub;
// stuff
if(!sub.HasFired())
// Do stuff
Current best attempt is:
public static bool HasFired<T>(this AsyncSubject<T> sub)
{
AsyncSubject<bool> ret = new AsyncSubject<bool>();
sub.Timeout(TimeSpan.FromMilliseconds(20))
.Subscribe(_ =>
{
ret.OnNext(true);
ret.OnCompleted();
},
ex =>
{
ret.OnNext(false);
ret.OnCompleted();
});
return ret.First();
}
But it feels very ugly and long. I suspect I’m missing something simple. Any suggestions?
It’s easier to wrap around the existing
AsyncSubjectand add the required state.Ironically, the original
AsyncSubjectupon reflection shows that there is ahasValuefield, but it doesn’t happen to be exposed. Consider reporting this to the Rx team – might be useful sometime.