试图用dataTaskPublisher获取一些数据。然而,不断收到以下日志。它每隔一段时间就会起作用,但不知道有什么区别。更改URL不会产生任何影响。仍然只是偶尔地成功了请求。
Test2:接收订阅:(TryMap)
Test2:请求无限
Test2:接收取消
class DataSource: NSObject, ObservableObject {
var networker: Networker = Networker()
func fetch() {
guard let url = URL(string: "https://jsonplaceholder.typicode.com/posts") else {
fatalError("Invalid URL")
}
networker.fetchUrl(url: url)
}
}
class Networker: NSObject, ObservableObject {
var pub: AnyPublisher<Data, Error>? = nil
var sub: Cancellable? = nil
var data: Data? = nil
var response: URLResponse? = nil
func fetchUrl(url: URL) {
guard let url = URL(string: "https://apple.com") else {
return
}
pub = URLSession.shared.dataTaskPublisher(for: url)
.receive(on: DispatchQueue.main)
.tryMap() { data, response in
guard let httpResponse = response as? HTTPURLResponse,
httpResponse.statusCode == 200 else {
throw URLError(.badServerResponse)
}
return data
}
.print("Test2")
.eraseToAnyPublisher()
sub = pub?.sink(
receiveCompletion: { completion in
switch completion {
case .finished:
break
case .failure(let error):
fatalError(error.localizedDescription)
}
},
receiveValue: {
print($0)
}
)
}发布于 2022-10-06 13:43:02
添加.store(in:&订阅)
https://stackoverflow.com/questions/72922641
复制相似问题