В моем приложении Nestjs я использую звонки Axios.Я пытаюсь прикрепить токен к каждому запросу axios, и только в случае ошибки тайм-аута я хочу, чтобы он отменил токен, зарегистрировал ошибку и остановил этот запрос.В настоящее время с этим кодом перехватчик работает нормально, но каждый раз выполняет блок if (Axios.isCancel (error)) {}.Даже если нет тайм-аута, и я получаю действительный ответ.Я не хочу отменять токен, если нет тайм-аута.
В настоящее время для каждого запроса я получаю независимо от тайм-аута или нет!:
======Request canceled=== Cancel { message: 'Operation canceled due to timeout!' }
import { Injectable, NestInterceptor, CallHandler, HttpCode } from '@nestjs/common';
import { Observable } from 'rxjs';
import Axios from 'axios';
import { request } from 'https';
import { timeout } from 'rxjs/operators';
@Injectable()
export class TimeoutInterceptor implements NestInterceptor {
intercept(context: any, next: CallHandler): Observable<any> {
const CancelToken = Axios.CancelToken;
const source = CancelToken.source();
const url:string = context.url? context.url: context.args[0].url;
Axios.defaults.timeout = 2000;
Axios.get(url, {
cancelToken: source.token
}).then( (res)=> {
console.log(res,'');
}, error => {
throw new Axios.Cancel('Operation canceled due to timeout!');
}
).catch( (error)=> {
if (Axios.isCancel(error)) {
console.log('=====================Request canceled=======', error);
} else {
// catchError(error => throwError(new Error('Service Timed out!')))
console.log('--else part------------------------------------');
}
});
return next.handle();
}
}