问题描述
我想将此函数转换为在Combine框架中编写。我尝试了几种方法,但是没有用。谁能对此有个想法?
func requestAuth(serviceParams: AuthServiceParams) -> Observable<AuthResponse> {
return Observable.create{observer -> disposable in
// buradaki işlemler rx 'te yapılacak.
AlamofireService.auth(serviceParams: serviceParams).responSEObject {
(response:DataResponse<AuthResponse>) in
if(response.error != nil ){
print("❌⭕️❌ Auth login hatalı bir dönüş aldı sorun var.")
observer.onError(response.error!)
observer.onCompleted()
return
} else {
if let data = response.result.value {
guard let token = data.data?.token else {
print("TOKEN BULUNAMADI")
let authResponse = AuthResponse(
result: "fault",success: false,data: nil,message: "Kullanıcı adı veya şifre hatalı",errCode: "E0000"
)
observer.onNext(authResponse)
return
}
print("AuthLogin Token -------> \(token)")
ApplicationVariables.token = token
ApplicationVariables.customer = data.data?.customer
ApplicationVariables.config = data.data?.store?.config
ApplicationVariables.logo = data.data?.store?.logo
observer.onNext(data)
}else {
let error = NSError(domain: "Bir sorun oluştu. Lütfen yöneticinize başvurunuz.",code: 1001,userInfo: nil)
observer.onError(error)
}
observer.onCompleted()
}
}
return disposables.create()
}
}
解决方法
您能获得的最接近的结果是使用=IF(OR(L2="Burkina Faso",L2="Mali",L2="Nigeria"),"Sahel",IF(L2="South Sudan","HoA",""))
,但请记住,期货是急切的。如果您希望函数仍然是惰性的,则必须将其包装在Future
调用中。
我还清理了代码,以更线性的方式阅读。
defer