在 RxBluetoothKit 中链接多个命令
Chaining multiple commands in RxBluetoothKit
之前我有这个关于很棒的 rxAndroidBle 的问题 -
这个解决方案非常有效!
现在是时候将该应用程序移植到 iOS 版本了,我正在努力寻找一种合适的方法来实现相同的结果。
基本上我需要发送一系列命令,按顺序发送到外设,命令需要按顺序发送,下一个命令应该在前一个命令完成时发送,理想情况下是所有命令都完成后的最终事件已发送,就像上面 link
中的 android 应用代码段一样
下面的代码可以完成工作,但如您所见,它并不漂亮,而且随着命令数量的增加,它很容易变得难以管理!
android 应用程序使用 Single.concat,RxSwift 的等价物是什么?
self.writeCharacteristic?.writeValue(command1, type: .withResponse)
.subscribe {
print("Command 1 complete ", [=10=] )
self.writeCharacteristic?.writeValue(command2, type: .withResponse)
.subscribe {
print("command2 complete ", [=10=] )
}
}
非常感谢任何指点!!!
谢谢
Single
没有 concat
方法,但您可以只使用 Observable.concat
并为每个 writeValue
方法调用 asObservable()
,如下所示:
Observable.concat(
characteristic.writeValue(command1, type: .withResponse).asObservable(),
characteristic.writeValue(command2, type: .withResponse).asObservable(),
characteristic.writeValue(command3, type: .withResponse).asObservable(),
...
characteristic.writeValue(command4, type: .withResponse).asObservable()
).subscribe { event in
switch event {
case .next(let characteristic):
print("Did write for characteristic \(characteristic)")
case .error(let error):
print("Did fail with error \(error)")
case .completed:
print("Did completed")
}
}
之前我有这个关于很棒的 rxAndroidBle 的问题 -
这个解决方案非常有效!
现在是时候将该应用程序移植到 iOS 版本了,我正在努力寻找一种合适的方法来实现相同的结果。
基本上我需要发送一系列命令,按顺序发送到外设,命令需要按顺序发送,下一个命令应该在前一个命令完成时发送,理想情况下是所有命令都完成后的最终事件已发送,就像上面 link
中的 android 应用代码段一样下面的代码可以完成工作,但如您所见,它并不漂亮,而且随着命令数量的增加,它很容易变得难以管理!
android 应用程序使用 Single.concat,RxSwift 的等价物是什么?
self.writeCharacteristic?.writeValue(command1, type: .withResponse)
.subscribe {
print("Command 1 complete ", [=10=] )
self.writeCharacteristic?.writeValue(command2, type: .withResponse)
.subscribe {
print("command2 complete ", [=10=] )
}
}
非常感谢任何指点!!! 谢谢
Single
没有 concat
方法,但您可以只使用 Observable.concat
并为每个 writeValue
方法调用 asObservable()
,如下所示:
Observable.concat(
characteristic.writeValue(command1, type: .withResponse).asObservable(),
characteristic.writeValue(command2, type: .withResponse).asObservable(),
characteristic.writeValue(command3, type: .withResponse).asObservable(),
...
characteristic.writeValue(command4, type: .withResponse).asObservable()
).subscribe { event in
switch event {
case .next(let characteristic):
print("Did write for characteristic \(characteristic)")
case .error(let error):
print("Did fail with error \(error)")
case .completed:
print("Did completed")
}
}