xiongzhu 2 jaren geleden
bovenliggende
commit
f3eb93981a
2 gewijzigde bestanden met toevoegingen van 19 en 9 verwijderingen
  1. 7 2
      src/game/game.service.ts
  2. 12 7
      testrxjs.mjs

+ 7 - 2
src/game/game.service.ts

@@ -610,7 +610,10 @@ export class GameService implements OnModuleInit {
                 }
                 const subject = new Subject<GameEvent>()
                 let voteSubject = new Subject<string>()
-                voteSubject.subscribe((v) => (choice = v))
+                voteSubject.subscribe({
+                    next: (v) => (choice = v),
+                    complete: () => (voteSubject = null)
+                })
                 const self = this
                 subject.subscribe({
                     async next(evt) {
@@ -645,7 +648,9 @@ export class GameService implements OnModuleInit {
                     break
                 }
                 this.logger.log('等待投票结束')
-                !voteSubject.closed && (await lastValueFrom(voteSubject))
+                if (voteSubject) {
+                    await lastValueFrom(voteSubject)
+                }
                 this.logger.log(`选择: ${choice}`)
                 addCharactor = null
                 if (lastState.charactors.filter((i) => !i.dead).length < 8) {

+ 12 - 7
testrxjs.mjs

@@ -1,8 +1,13 @@
-import { Subject, last, lastValueFrom, shareReplay } from 'rxjs'
+import { Subject, defaultIfEmpty, last, lastValueFrom, shareReplay } from 'rxjs'
 
-const source = new Subject()
-subject.next(1)
-subject.complete()
- 
-subject.pipe(last()).subscribe(console.log)
- 
+const s = new Subject()
+s.subscribe((v) => {
+    console.log('A', v)
+})
+s.next(1)
+s.complete()
+console.log(s.closed)
+console.log(s.closed)
+const r = await lastValueFrom(s)
+console.log('aaa')
+console.log(r + '1')