【发布时间】:2017-08-23 15:56:43
【问题描述】:
当我尝试通过 Angular 4 中的 http 服务发出多个 http 请求时, 以前的请求在 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's 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()
我为什么会遇到这种行为?我需要理解,而不是绕过。我如何在不进行合并、分叉等的情况下提出一系列请求?
【问题讨论】:
-
我可以绕过,在这种情况下,谢谢!