反应式可可强制同步函数等待反应式回调



我做了很多研究,但没有得到任何答案。

这是我的代码:

fileprivate var dispose: ScopedDisposable<AnyDisposable>?    
func connectToServer() {
...
let user = ...
let channelName = getChannelName(user)
self.connector.connectTo(channelName)
}
func getChannelName(_ user: String) -> String {
var channelName: String = ""
self.dispose = ScopedDisposable(
self.service.requestChannelNameFromServerForUser(user)
.startWithValues({ results in
channelName = results[0].channelName
})
)
return channelName // this will return "" because callback hasn't returned yet
}

我正在尝试找到一种方法来使函数"getChannelName"等待,直到从反应请求(从另一台服务器(检索"channelName"。

感谢您的帮助。

first()函数基本上会为你做这件事:

func getChannelName(_ user: String) -> String {
let result = self.service.requestChannelNameFromServerForUser(user).first()
if let results = result?.value {
return results[0].channelName
}
else {
// The producer returned no values or an error. Return a default value or throw error or something.
return ""
}
}

但更惯用的方法是使connectToServer本身成为一个异步SignalProducer,将getChannelNameconnectTo生产者连接成一个更大的生产者。

相关内容

  • 没有找到相关文章

最新更新