Skip to content

When a subject is multicasted, first subscription next event in its observer synchronously, the second subscription will get the reverse sequence of event #6976

Description

@sanmaopep

Describe the bug

When a subject is subscribed into two subscription: a & b

In subscription a:
console a value
next a value synchronously and recursively (for instance 1, 2, 3, 4, 5)

In subscription b:
console a value

and subject next a value 1 so 1 will be multicasted to a & b

And subscription a will console 1, 2, 3, 4, 5, which meets the demand
But subscription b will console 5, 4, 3, 2, 1, in this case the normal event sequence is reversed

Expected behavior

subscription a & b console the same event sequence

subscription a will console 1, 2, 3, 4, 5
subscription b will also console 1, 2, 3, 4, 5

Reproduction code

const test$ = new Subject();

// a subscription
test$.subscribe((current) => {
  console.log('a', current);
  if(current < 5) {
    test$.next(current + 1)
  }
})

// b subscription
test$.subscribe((current) => {
  console.log('b', current);
})

test$.next(1);

// a 1
// a 2
// a 3
// a 4
// a 5

// b 5
// b 4
// b 3
// b 2
// b 1


### Reproduction URL

_No response_

### Version

7.2.0

### Environment

_No response_

### Additional context

_No response_

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions