http перехватчик создает для каждого запроса? - PullRequest
0 голосов
/ 19 сентября 2018

customInterceptor.js

counter = 0;

constructor() {
 console.log('interceptor : '+this.counter);
}

log

для запроса входа: example.com / users

interceptor : 0
interceptor : 1 
interceptor : 2
interceptor : 3

Выйдите из системы и войдите снова: example.com / users

interceptor : 10
interceptor : 11 
interceptor : 12
interceptor : 13

Попытался выяснить, создал ли я несколько экземпляров перехватчиков, я вызвалэто из

app.module.ts

providers: [{
 provide: HTTP_INTERCEPTORS,
 useClass: customInterceptor,
 multi: true,
}],

http.service.ts

counter = 0;
req_counter = 0;

constructor(private injector: Injector) {
 console.debug(this.counter++, injector.get(HTTP_INTERCEPTORS);
}

get(url: string, options){
console.debug(req_counter++.concat(' : ', url);
 ...
}

1 Ответ

0 голосов
/ 19 сентября 2018

В общем, нет .Вероятно, вы видите, как работает внедрение зависимостей .Это не имеет ничего общего с тем фактом, что они являются перехватчиками - это случается с каждым сервисом.

Перехватчики - это сервисы, которые вам необходимы для предоставления .Если вы предоставите их несколько раз, при необходимости их создания будет создано несколько экземпляров.

Убедитесь, что вы делаете следующее только в своем основном NgModule (обычно с именем AppModule):

    providers: [
      {
        provide: HTTP_INTERCEPTORS,
        useClass: MyInterceptor,
        multi: true
      },
    ]

Если вы сделаете это несколько раз на разных модулях для одного и того же перехватчика (MyInterceptor), вы получите несколько экземпляров (как вы описали, construtor будет вызываться много раз).

...