#swift #rx-swift
#swift #rx-swift
Вопрос:
Я использовал RxSwift для вызова другой функции при возврате первой функции. Для этого я попробовал этот код:
func startSyncNow(_ call: CAPPluginCall,lastSyncTime: String) -> Observable<String> {
return createOrAlterTable(call)
.flatMapLatest(){ query -> Observable<String> in
let formschema = self.formSchemaToSQLite(call, lastSyncTime: lastSyncTime)
return formschema
}.flatMapLatest(){ query -> Observable<String> in
let menuTable = self.menuTableRecord(call, lastSyncTime: lastSyncTime)
return menuTable
}
.map { query -> String in
return "Success"
}
}
func createOrAlterTable(_ call: CAPPluginCall) -> Observable<[[String:Any]]>{
return Observable.just("Sucess")
}
func formSchemaToSQLite(_ call: CAPPluginCall,lastSyncTime : String) -> Observable<String> {
return Observable.just("Sucess")
}
func menuTableRecord(_ call: CAPPluginCall,lastSyncTime:String) -> Observable<String>{
return Observable.just("Sucess")
}
Когда я отлаживаю этот код, я не могу попасть в точку отладки ни в formSchemaToSQLite, ни в recordsTOSqlite. Пожалуйста, объясните мне, чего мне не хватает
Комментарии:
1. Вам нужно подписаться на наблюдаемое.
2. @DanielT. не могли бы вы, пожалуйста, поделиться фрагментом кода, который будет работать, я пытался подписаться, но с ошибкой компилятора
3. Я рад опубликовать рабочий пример. Сначала мне нужно, чтобы вы предоставили пример кода, который все же компилируется. Приведенный выше пример кода не компилируется.
4. @DanielT, вот код, который будет скомпилирован, «
5. Он все равно не будет компилироваться…
Ответ №1:
Компилируется следующее, и при вызове example()
функции вызываются все функции:
struct CAPPluginCall { }
func example() {
_ = startSyncNow(CAPPluginCall(), lastSyncTime: "before")
.subscribe(onNext: { result in
print(result)
})
}
func startSyncNow(_ call: CAPPluginCall, lastSyncTime: String) -> Observable<String> {
return createOrAlterTable(call)
.flatMapLatest { query -> Observable<String> in
let formschema = formSchemaToSQLite(call, lastSyncTime: lastSyncTime)
return formschema
}
.flatMapLatest { query -> Observable<String> in
let menuTable = menuTableRecord(call, lastSyncTime: lastSyncTime)
return menuTable
}
.map { query -> String in
return "Success"
}
}
func createOrAlterTable(_ call: CAPPluginCall) -> Observable<[[String:Any]]>{
return Observable.just([[:]])
}
func formSchemaToSQLite(_ call: CAPPluginCall,lastSyncTime : String) -> Observable<String> {
return Observable.just("Sucess")
}
func menuTableRecord(_ call: CAPPluginCall,lastSyncTime:String) -> Observable<String>{
return Observable.just("Sucess")
}