Помогите пожалуйста понять как forkJoin работает с двумя синхронными потоками.
Пример:
var s = Rx.Observable.of(1, 2, 3);
var s1 = Rx.Observable.of(1, 2, 3);
var sub = Rx.Observable.forkJoin(s, s1)
sub.subscribe(x => console.log(x));
В этом пример странно то, что в консоль выводится два значения, причём непонятно каким образом сформированные:
0:3
1:3
Я вижу правильное выполнение так:
- после старта мгновенно генерируются значения из первого потока. В результате первый поток выдаёт значение 3
- затем второй поток начинает выдавать значения. И хотя он тоже это делает мгновенно, но на этот момент уже существует тройка из первого потока. Поэтому консоль должна вывести: 3:1,
- а остальные пары игнорировать так как тройка из первого потока не меняется