Joe Flateau
Joe Flateau

Reputation: 1225

Composite Observable

I have the following code:

Observable.FromEvent<ModelEventArgs>(
        h => ValuesController.ModelAdded += h,
        h => ValuesController.ModelAdded -= h)
    .Subscribe(m => context.Connection.Broadcast(m));

Observable.FromEvent<ModelEventArgs>(
        h => ValuesController.ModelDeleted += h,
        h => ValuesController.ModelDeleted -= h)
    .Subscribe(m => context.Connection.Broadcast(m));

What would be cleaner would be:

Observable.[SOMETHING](
        Observable.FromEvent<ModelEventArgs>(
                h => ValuesController.ModelAdded += h,
                h => ValuesController.ModelAdded -= h),
        Observable.FromEvent<ModelEventArgs>(
                h => ValuesController.ModelDeleted += h,
                h => ValuesController.ModelDeleted -= h))
    .Subscribe(m => context.Connection.Broadcast(m));

I can't seem to figure out what that [SOMETHING] needs to be, I don't want to wait for ModelAdded to Complete, i just want them both to emit (m) for each event.

Go easy on me, I'm an Rx newb

Upvotes: 3

Views: 722

Answers (1)

Enigmativity
Enigmativity

Reputation: 117027

I think you're looking for Merge:

Observable.Merge(
        Observable.FromEvent<ModelEventArgs>(
                h => ValuesController.ModelAdded += h,
                h => ValuesController.ModelAdded -= h),
        Observable.FromEvent<ModelEventArgs>(
                h => ValuesController.ModelDeleted += h,
                h => ValuesController.ModelDeleted -= h))
    .Subscribe(m => context.Connection.Broadcast(m));

Upvotes: 7

Related Questions