【发布时间】:2020-09-30 01:44:37
【问题描述】:
我是新来的组合......我有一个有订阅者的函数,该函数将从发布者返回一个值,但该函数将在等待接收器完成之前返回一个空值......有没有办法等待接收器并将值分配给函数返回变量,然后将字符串返回给该函数的调用者。
func getState() -> String{
var state = ""
let statesub = API.getCheckedState(employeeId: "342344", user: user!)
statesub
.mapError({ (error) -> APIError in // 5
NSLog(error.errorDescription!)
return error
})
.sink(receiveCompletion: { _ in},
receiveValue:{
NSLog("State : \($0.state)")
state = $0.state
})
.store(in: &tokens)
return state
【问题讨论】:
-
不,你不能。这是一个异步函数,所以如果你从来没有处理过异步编程,我强烈建议你阅读一下。简而言之,如果您希望函数的调用者获取值,您需要实现一个回调(调用者将提供)并在
.sink中调用它,或者如果调用者期望发布者,则返回发布者(.sink之前的链)