Tôi đang viết một ứng dụng sẽ giám sát số bản dựng hiện tại của tất cả các ứng dụng của chúng tôi trên các máy chủ khác nhau. Điều này được thực hiện bằng cách thực hiện một yêu cầu http cho một tệp txt trong mọi ứng dụng. Tôi đang làm điều đó bằng cách sử dụng một vòng lặp foreach.Cách biết khi nào tất cả các cuộc gọi HTTP Angular2 được hoàn thành
Vấn đề tôi gặp phải là tôi không chắc chắn cách sử dụng (Observables) để biết khi nào tất cả các yêu cầu được hoàn tất.
Khi yêu cầu quay lại, tôi thêm phản hồi làm thuộc tính của một mảng đối tượng. Sau đó, khi tôi có tất cả dữ liệu, tôi liên kết nó với mẫu của thành phần, nơi nó được lọc theo đường ống. Vì vậy, tôi cần đảm bảo rằng tôi không ràng buộc nó cho đến khi tất cả dữ liệu được hoàn thành.
Sau đây là cách tôi nhận được dữ liệu:
this.apps.forEach(app => {
app.Environments.forEach(env => {
this._buildMonitorService.getBuilds(env.URL)
.subscribe((data) => {
setupBuilds(this.apps,data.url,data._body);
});
});
});
setupBuilds
thêm phản ứng với mảng của tôi về các ứng dụng.
Điều tôi đang tìm là một cách hiệu quả một Promise.all
nơi tôi sẽ ràng buộc this.builds
để thiết lập dữ liệu trong setupBuilds
nhưng tôi không biết làm thế nào để làm điều đó với rxjs quan sát
Vì vậy, tôi đã thử thiết lập này (đầu tiên theo cách của riêng tôi và sau đó một lần nữa với mã chỉnh sửa của bạn), và tôi nhận được 'Observable_1.Observable.forkJoin không phải là một chức năng' –
Tôi nghĩ câu trả lời của bạn sẽ là những gì tôi tìm kiếm, nhưng nó không hoàn toàn hoạt động –
Bạn cần phải nhập toán tử: 'import 'rxjs/add/operator/forkJoin';' hoặc nhập mọi thứ từ rxjs 'import 'rxjs/Rx';' –