Khi tôi cố gắng tạo nhiều yêu cầu http qua dịch vụ http ở góc 4, yêu cầu trước đó bị hủy bỏ vào Chrome (nhưng chúng đạt đến máy chủ). Ví dụ:góc 4. Một loạt các yêu cầu HTTP GET hủy
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
Nhưng nếu tôi thay .subscribe()
để .publish().connect()
như trên, nó sẽ làm việc một cách chính xác (không hủy bỏ)
const obs1 = this.http.get(`${API_URL}/transitions`);
const obs2 = this.http.get(`${API_URL}/states`);
obs1.publish().connect();
obs2.publish().connect();
Hoặc nếu tôi hợp nhất hai Observables
một và sau đó được đăng ký như trên, nó sẽ hoạt động chính xác quá
const obs1 = this.http.get(`${API_URL}/transitions`);
const obs2 = this.http.get(`${API_URL}/states`);
Observable.merge(obs1, obs2).subscribe()
Tại sao tôi phải đối mặt với hành vi này? Tôi cần hiểu, không bỏ qua. Làm thế nào tôi có thể làm cho hàng loạt các yêu cầu mà không sáp nhập, forking vv?
Bây giờ tôi cảm thấy tồi tệ, vì tôi sẽ bình luận về điều đó nhưng chỉ cho rằng ví dụ của bạn đã được đơn giản hóa. Nếu bạn cần thực hiện yêu cầu http mà không cần đăng ký. Bạn có thể gọi 'http.get (...). (1)' sẽ đăng ký và hủy đăng ký sau khi mục đầu tiên được tìm nạp. – cgTag
@ctTag Mất (1) sẽ gọi sự kiện yêu cầu mà không có phương thức đăng ký không? – WimmDeveloper
@ctTag Không, nó sẽ không. Đã kiểm tra ngay bây giờ. Nhưng tôi vừa mới nhận ra rằng đối với các phương thức http rất hợp lý để sử dụng '.take (1)' – WimmDeveloper