백그라운드에서 값을 계산하고 Swift 동시성 이후에 결과 사용
2882 단어 swiftiosstructuredconcurrency
예를 들어 보겠습니다.
Example
값을 계산하고 반환하려고 시도하는 초기 작업을 생성하는 String
라는 구조체를 정의했습니다. 구조체에는 계산된 값을 반환하는 value()
라는 비동기 메서드도 있습니다.struct Example {
private var someTask: Task<String, Error> = Task {
// Some calculation
try await Task.sleep(nanoseconds: 3_000_000_000)
return "example"
}
func value() async throws -> String {
return try await someTask.value
}
}
계산된 값에 액세스하려는 경우 Swift Task 구조에 정의된
value
속성을 사용할 수 있습니다. 작업이 완료되지 않은 경우 이 속성에 액세스하면 작업이 완료될 때까지 대기하고 우선 순위가 현재 작업의 우선 순위로 높아집니다.Example
구조를 사용하려면 이를 인스턴스화하고 비동기 컨텍스트에서 값을 읽어야 합니다.let example = Example()
Task {
do {
print("Value is:", try await example.value())
}
}
작업에서 오류가 발생하지 않으면 해당 유형은
Task<ReturnType, Never>
가 되고 작업 값에 액세스할 때 try
키워드를 사용할 필요가 없습니다.이것은 사전에 무언가를 계산하고 싶고 사용자가 요청하면 즉시 가지고 있는 상황에서 도움이 되었습니다. 예를 들어, 사용자가 이미지를 보내기 위해 버튼을 누를 경우를 대비하여 카메라에서 이미지를 압축하고 싶었습니다. 이미지 미리보기 화면에서 압축을 시작하고 사용자가 전송을 원할 때 압축된 이미지를 준비합니다.
Reference
이 문제에 관하여(백그라운드에서 값을 계산하고 Swift 동시성 이후에 결과 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/daholino/calculate-values-in-background-and-use-the-result-after-with-swift-concurrency-2mbe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)