umijs / umi-request

A request tool based on fetch.
2.2k stars 336 forks source link

request.interceptors.response执行完后执行了fetch response.then 方法,顺序是不是执行反了。 #233

Open wenshan opened 3 years ago

wenshan commented 3 years ago

正常流程是 fetch response.then 的方法,在 request.interceptors.response 拦截器,拦截器处理完数据直接 抛给业务使用了。

反而 request.interceptors.response执行后 必须 return response 执行才行,如果数据处理后 执行 fetch response.then 就报错了,那么拦截器的 作用 不能作为数据处理的环节 导出期望的数据结构, 拦截器就没有意义了。

furylee commented 3 years ago

是有点奇怪,没有响应成功的拦截,只有全局拦截和错误拦截,然后所有的请求操作都要加状态判断,很难受,还是换axios了

lifegit commented 3 years ago

没问题的!

responseInterceptors: [async (response, options) => { return response.clone().json().then(res => { return res?.data || {} }) }]