当我试图让通过在角4 HTTP服务多个HTTP请求, 以前的请求获得在Chrome取消(但他们到达服务器)。 例子:角4.一系列的HTTP请求被取消
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()
为什么我要面对这种行为?我需要了解,而不是绕过。我怎样才能让一系列请求没有合并,分叉等?
现在我感觉不好,因为我会有关发表评论,但只是假定你的例子进行了简化。如果你需要执行一个没有订阅的http请求。你可以调用'http.get(...)。take(1)'在获取第一个项目后订阅并销毁订阅。 – cgTag
@ctTag是否需要(1)将调用请求事件而不订阅方法? – WimmDeveloper
@ctTag不,它不会。现在检查。但是我刚刚意识到,对于HTTP方法非常合乎逻辑的使用'。取(1)' – WimmDeveloper