Когда я пытаюсь сделать несколько HTTP-запросов через http-сервис в Angular 4, предыдущий запрос отменяется в Chrome (но они доходят до сервера). Пример:
const obs1 = this.http.get(`${API_URL}/transitions`);
const obs2 = this.http.get(`${API_URL}/states`);
obs1.subscribe();
obs2.subscribe(); // this will cancel obs1 http request
Но если я заменил .subscribe()
на .publish().connect()
, как указано выше, он будет работать правильно (не отменяется)
const obs1 = this.http.get(`${API_URL}/transitions`);
const obs2 = this.http.get(`${API_URL}/states`);
obs1.publish().connect();
obs2.publish().connect();
Или, если я объединить два Observables
в один, а затем подписаться, как указано выше, он будет работать правильно.
const obs1 = this.http.get(`${API_URL}/transitions`);
const obs2 = this.http.get(`${API_URL}/states`);
Observable.merge(obs1, obs2).subscribe()
Почему мне приходится сталкиваться с таким поведением? Мне нужно понять, а не обходить. Как я могу сделать серию запросов без слияния, форсирования и т.д.?