Cleanest way to handle custom errors with fetch & ES6 promise

后端 未结 2 625
说谎
说谎 2020-12-31 18:22

I am trying to intelligently handle the success/error responses from our API using fetch & ES6 promises.

Here is how I need to handle response statuses:

2条回答
  •  太阳男子
    2020-12-31 18:42

    I think you can write it out pretty easily:

    fetch(…).then(response => {
        if (response.ok)
            return response[response.status == 204 ? "text" : "json"]();
        if (response.status == 422)
            return response.json().then(err => { throw err; });
        if (response.status == 406)
            var error = new AuthentificationError(response.statusText); // or whatever
        else
            var error = new Error(response.statusText)
        error.response = response
        throw error;
    })
    

提交回复
热议问题