RxJS Continue Listening After Ajax Error

后端 未结 3 1727
花落未央
花落未央 2020-12-14 02:31

RxJs stops listening to click events when an inner observable errors (Ajax request). I\'m trying to figure out how to keep the event listener hooked to the button click even

3条回答
  •  攒了一身酷
    2020-12-14 03:14

    I was still a little confused after trying the accepted answer, so this is what ended up working for me. This is what I had:

      Rx.Observable.fromEvent(emitter, events.SUBMIT_EVENT)
          .flatMapFirst(email=>{
            return $.ajax({
              method: "POST",
              url: '/email',
              data: {
                email: email
              },
            }).promise()
          })
          .subscribe(response=>{
            if (response) {
              //do your success thing here
                }
              },
             error =>{
               //do your error thing
              }
             )
    

    When the server returned an error (like when the user already entered their email) I wasn't able to listen for the user's email form submit again. This is what worked for me:

      Rx.Observable.fromEvent(emitter, events.SUBMIT_EVENT)
          .flatMapFirst(email=>{
            return $.ajax({
              method: "POST",
              url: '/email',
              data: {
                email: email
              },
            }).promise()
          })
          .doOnError(error=> {
            //do your error thing here
          })
          .retry()
          .subscribe(response=>{
            if (response) {
              //do your success thing here
            }
          })
    

提交回复
热议问题