当我尝试通过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
Run Code Online (Sandbox Code Playgroud)
但如果我更换.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();
Run Code Online (Sandbox Code Playgroud)
或者,如果我将两个合并Observables为一个然后像上面那样订阅,它也将正常工作
const obs1 = this.http.get(`${API_URL}/transitions`);
const obs2 = this.http.get(`${API_URL}/states`);
Observable.merge(obs1, obs2).subscribe()
Run Code Online (Sandbox Code Playgroud)
为什么我会面对这种行为?我需要了解,而不是绕过.如何在不合并,分叉等的情况下进行一系列请求?