Rx - объединить 2 разных последовательности - PullRequest
0 голосов
/ 06 октября 2018

У меня есть 2 последовательности, которые производят разные данные в разном темпе.

Допустим, один из них - Price, который производит цены каждую X-миллисекунду.

Вторая последовательность - weather report, которая создает отчет о погоде каждую Y-миллисекунду.

Мне нужно снимать обе последовательности каждые 30 миллисекунд и обрабатывать их.Ниже приводится мраморная диаграмма того, чего я пытаюсь достичь:

Price : 1--2--3--4--

Weather: ----S-----C-

Time(ms): ------30--60-

Result: ------R1--R2

Где R1 -> Price: (1,2,3), Weather: S

       R2 -> Price: 4, Weather: C

Для уточнения, через 30 миллисекунд цена секв.имеет 1, 2, 3 и погоду секв.имеет S, поэтому я хочу получить результат (1,2,3) и погоду (S).Перемотка вперед на 30 миллисекунд, на этот раз цена секв.имеет 4 и погода имеет C, поэтому теперь я хочу получить цену (4) и погоду (C).

Я пытался буферизовать каждую последовательность отдельно, а затем объединить их, используя Zip

priceSequence
    .Buffer(TimeSpan.FromMilliseconds(30))
    .Zip(
        weatherSequence.Buffer(TimeSpan.FromMilliseconds(30)),
        (price, weather) => (price, weather))
    .Subscribe(Process);

Хотя это работает, это не так, и я думаю, возможно, есть лучший способ добиться этого.

Есть идеи, как это можно сделать?Или вы думаете, что решение, которое я предоставил выше, является хорошим.

...