Как сделать пул с помощью RXSwift - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь сделать пул, запрашивающий несколько раз одну и ту же услугу и проверяющий, равен ли статус завершенному состоянию.Проблема в том, что мой .subscribe (onNext:) никогда не вызывается.Есть идеи, где я ошибся?: x

statusDisposable = NetworkManager.shared.service(with: parameter)
            .asObservable()
            .flatMap({ [weak self] (status) -> Observable<TransactionStatus> in
                guard let `self` = self else { return Observable.error(TransactionStatusCode.error) }
                return NetworkManager.shared.service(with: parameter)
                    .asObservable()
                    .flatMap({ (status) -> Observable<TransactionStatus> in
                        let code = status.statusCode
                        return code == .finished ? Observable.just(status) : Observable.error(code ?? TransactionStatusCode.error)
                    })
                    .delaySubscription(10, scheduler: MainScheduler.instance)
                    .skipWhile({ $0.statusCode == .authorized })
                    .takeWhile({ !self.isFinished(status: $0) })
            })
            .subscribe(onNext: { [weak self] (status) in
                if self?.isFinished(status: status) ?? false {
                    self?.terminateTransaction()
                    self?.completed.onNext(status)
                } else {
                    self?.completed.onError(status.statusCode ?? TransactionStatusCode.error)
                }
            }, onError: { [weak self] error in
                self?.completed.onError(error)
            })
...