You can define your async func like this
extension WKWebView {
@discardableResult
func evaluateJavaScriptAsync(_ str: String) async throws -> Any? {
return try await withCheckedThrowingContinuation { (continuation: CheckedContinuation<Any?, Error>) in
DispatchQueue.main.async {
self.evaluateJavaScript(str) { data, error in
if let error = error {
continuation.resume(throwing: error)
} else {
continuation.resume(returning: data)
}
}
}
}
}
}
Topic:
Safari & Web
SubTopic:
General
Tags: