1
이있는 각 이벤트에 대해 지연된 두 번째 후속 이벤트 생성 현재 반응 형 프레임 워크로 MIDI 메시지를 처리하려고합니다.Rx
NoteOn 이벤트를 생성 할 때는 NoteOff 이벤트를 따라야합니다. 그렇다면 일정 시간이 지났을 때 각 노트 다음에 두 번째 이벤트를 보내는 가장 좋은 방법은 무엇일까요?
뭔가 같은 : NoteOn 및 NoteOff 메시지가 동일한 유형 MidiMessage
의이다
//pseudo code
var noteOnObservable = GetNoteOns();
var noteOffObservable = noteOnObservable.ForEach(e => new NoteOffMessage(e.MidiNote))
.Delay(e => GetDelay(e));
var notes = noteOnObservable.Merge(noteOffObservable);
.
내가 너무 가깝다는 것을 알지 못했습니다. Publish(). RefCount() 개선에 감사드립니다. 그 GetDelay는 아직 지정되지 않았습니다. 다음 작업입니다. Observable.Timer는 이벤트 당 개별 지연을 위해 작업할까요? – thalm
예. 정적 인'TimeSpan' (모든 이벤트에 유니폼)을 지정하고 싶다면,'.Delay (TimeSpan.FromMilliseconds (100))'또는 적절한 시간이 무엇이든간에 할 수 있습니다. – Shlomo
@Shlomo - 약간 더 깔끔한 방법은 다음과 같이하는 것입니다 : var notes = GetNoteOns(). Publish (gnos => gnos.Merge (gnos.Select (e => new NoteOffMessage (e.MidiNote)). 지연 e => GetDelay (e))));'. – Enigmativity