Search code examples
javascriptrxjsobservableobserver-patternrxjs5

Why can I no longer call next() after calling complete() on an RxJs Subject?


I have service which connects with Subject() to do paging. I'm using next(newData) to pass to subject, which keeps things alive, now I need to use complete() on each ajax call and pass it to subject. but after doing one complete() I'm started get error.

I wanted to know, can we still pass Subject observables still next(newData) if once completed() is already been triggered?


Solution

  • There is some information on subjects from a former question on stack overflow : here. I encourage you to review it.

    About your specific question, subjects once completed cannot emit any longer. This is part of the contract they abide by. Depending on the logic and flow of your application, you might:

    • decide not to complete the subject (why indeed are you completing it if you still need it later on?)
    • create a new subject whenever you need one, but then you have to pass it to whoever needs it.