RXSwift -等待多个API或任务完成

1tuwyuhd  于 2022-12-10  发布在  Swift
关注(0)|答案(1)|浏览(104)

我是RxSwift的新手,我希望能够实现这样的目标。
我有2个不同的API需要填充到UITableView中。
我想实现类似于等待2个API完成返回数据,然后我重新加载UITableView一次。
我试过Observable.zip和Observable.combineLatest,但我仍然不能得到我想要的。
有人能帮我吗?
下面是我希望如何完成的想法

func viewDidLoad() {
    setupObs()
    getBalance()
    getTransaction()
}

func getBalance() {
    //Call get balance
}

func getTransaction() {
    // Call get transaction
}

func setupObs() {
        Observable.zip(
            getBalance(),
            getTransaction()
        )
        .subscribe(onNext: { bal, trx in
            print("Done")
        }, onCompleted: {
            print("completed")
        }).disposed(by: disposeBag)

}

输出“完成”打印两次

0x6upsns

0x6upsns1#

Observable.zip运算符是最适合使用的运算符。尽管您可能做错了其他事情。您的代码应该如下所示:

Observable.zip(firstAPI(), secondAPI()) { firstResult, secondResult in
    combineData(first: firstResult, second: secondResult) // this must return an array!
}
.bind(to: tableView.rx.items) { tableView, row, item in
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: IndexPath(row: row, section: 0))
    // configure cell with item
    return cell
}
.disposed(by: disposeBag)

很可能,您的错误是没有从运算符返回数组,因此rx.items绑定器会发出抱怨。

相关问题