Home > Back-end >  How to handle errors in rxjs instead of try/catch?
How to handle errors in rxjs instead of try/catch?

Time:05-19

Originally, the error is handled as follows.

async getLists() {
  try {
    const list = await api.getList();
    list.filter() ....
  } catch(e) {
    console.log(e)
  }
}

How can I handle it using rxjs in the same situation?

I'm not familiar with rxjs, so I don't know if it's the answer, but the code I thought of is like this.

getLists() {
 from(api.getList()).subscribe(
   list => list.filter.....,
   e => console.log(e)
 )
}

I want to know how to handle all the errors that may occur when calling the API, such as try-catch, and the errors that may occur when processing the data received from the API after the API call.

Promises are being returned after API calls, but rxjs must be used If an error occurs, I want to unsubscribe.

CodePudding user response:

So this should be a decent example of how to handle errors.

const getLists = getLists() {
 from(api.getList()).pipe(catchError(error => of(`Bad Promise: ${error}`))
}

//output: 'Bad Promise: Rejected'
const subscribe = getLists.subscribe(val => console.log(val));

This is based on your example. You need to handle a promise, not an observable. (as mentioned by @Aakash Garg).

CodePudding user response:

You can use subscribe and handle subscribe error like this:

getLists() {
 api.getList().subscribe(response => {
   // do something with the response data
 },
 () => {
    console.log('Error text');
  })
}

let me know if it works for you.

  • Related