File tree Expand file tree Collapse file tree 2 files changed +22
-7
lines changed Expand file tree Collapse file tree 2 files changed +22
-7
lines changed Original file line number Diff line number Diff line change @@ -79,6 +79,21 @@ describe('AsyncSubject', () => {
79
79
expect ( observer . results ) . to . deep . equal ( [ 2 , 'done' ] ) ;
80
80
} ) ;
81
81
82
+ it ( 'should not allow change value after complete' , ( ) => {
83
+ const subject = new AsyncSubject ( ) ;
84
+ const observer = new TestObserver ( ) ;
85
+ const otherObserver = new TestObserver ( ) ;
86
+ subject . subscribe ( observer ) ;
87
+
88
+ subject . next ( 1 ) ;
89
+ expect ( observer . results ) . to . deep . equal ( [ ] ) ;
90
+ subject . complete ( ) ;
91
+ expect ( observer . results ) . to . deep . equal ( [ 1 , 'done' ] ) ;
92
+ subject . next ( 2 ) ;
93
+ subject . subscribe ( otherObserver ) ;
94
+ expect ( otherObserver . results ) . to . deep . equal ( [ 1 , 'done' ] ) ;
95
+ } ) ;
96
+
82
97
it ( 'should not emit values if unsubscribed before complete' , ( ) => {
83
98
const subject = new AsyncSubject ( ) ;
84
99
const observer = new TestObserver ( ) ;
Original file line number Diff line number Diff line change @@ -6,11 +6,9 @@ import {Subscription} from './Subscription';
6
6
* @class AsyncSubject<T>
7
7
*/
8
8
export class AsyncSubject < T > extends Subject < T > {
9
- value : T = null ;
10
-
11
- hasNext : boolean = false ;
12
-
13
- hasCompleted : boolean = false ;
9
+ private value : T = null ;
10
+ private hasNext : boolean = false ;
11
+ private hasCompleted : boolean = false ;
14
12
15
13
protected _subscribe ( subscriber : Subscriber < any > ) : Subscription {
16
14
if ( this . hasCompleted && this . hasNext ) {
@@ -26,8 +24,10 @@ export class AsyncSubject<T> extends Subject<T> {
26
24
}
27
25
28
26
next ( value : T ) : void {
29
- this . value = value ;
30
- this . hasNext = true ;
27
+ if ( ! this . hasCompleted ) {
28
+ this . value = value ;
29
+ this . hasNext = true ;
30
+ }
31
31
}
32
32
33
33
complete ( ) : void {
You can’t perform that action at this time.
0 commit comments