В этом случае вам понадобится Single.create
.
. Для этого требуется блок с одним аргументом.Этот аргумент является функцией, которую вы можете вызвать, чтобы передать SingleEvent
, т.е. либо .success(Element)
(где Element
равно String
в вашем случае), либо .error
.
Блок долженвернуть Disposable
.Вы можете создать Disposable
, который будет выполнять дополнительную работу, когда он будет утилизирован.В контексте сетевых запросов имеет смысл отменить запрос.
func loadImageName(url: URL) -> Single<String> {
let data = try? Data(contentsOf: url)
guard let query = data else {
return .error(Error.notFound)
}
// ...
Single.create { single in
let request = Alamofire.request(request).responseJSON {
if let error = $0.error {
return single(.error(error))
}
return single(.success(result))
}
return Disposables.create { request.cancel() }
}
}