Tôi vẫn là người mới hoạt động và tôi đang tìm kiếm trợ giúp.Kết hợp hai Quan sát <Void> s
func doA() -> Observable<Void>
func doB() -> Observable<Void>
enum Result {
case Success
case BFailed
}
func doIt() -> Observable<Result> {
// start both doA and doB.
// If both complete then emit .Success and complete
// If doA completes, but doB errors emit .BFailed and complete
// If both error then error
}
Trên đây là những gì tôi nghĩ là tôi muốn ... Các chức năng ban đầu doA()
và doB()
mạng bọc gọi để họ cả hai sẽ phát ra một tín hiệu và sau đó Complete
(hoặc Error
mà không phát ra bất kỳ Next
sự kiện.) Nếu doA()
Hoàn thành nhưng doB()
lỗi, tôi muốn doIt()
phát ra .BFailed
và sau đó hoàn tất.
Có vẻ như tôi nên sử dụng zip
hoặc combineLatest
nhưng tôi không biết làm cách nào để biết chuỗi nào bị lỗi nếu tôi làm điều đó. Tôi cũng khá chắc chắn rằng catchError
là một phần của giải pháp, nhưng tôi không chắc chắn chính xác vị trí đặt nó.
-
Khi tôi đang nghĩ về điều đó, tôi đồng ý với các cuộc gọi diễn ra tuần tự. Đó thậm chí có thể tốt hơn ...
IE:
Start doA()
if it completes start doB()
if it completes emit .Success
else emit .BFailed.
else forward the error.
Cảm ơn sự giúp đỡ nào.
Hmm ... Cảm ơn câu trả lời, nhưng RxSwift không có phương pháp vật chất hóa. Ít nhất là chưa. –