webViewの中身を取得してその内容にもとづいて次の仕事にかかりたいのですが、semaphoreはどう書けばいいのでしょう?
実行するとwaitingのまま帰ってこなくなります
Swift3
1 @IBOutlet var myWeb: WKWebView! 2 let semaphore = DispatchSemaphore(value: 0) 3 var html = "empty" 4 5 @IBAction func btn3(_ sender: Any) { 6 self.myWeb.evaluateJavaScript("document.body.innerHTML;", completionHandler: { (object, error) -> Void in 7 self.html = String(describing: object) 8 print("processing") 9 self.semaphore.signal() 10 }) 11 12 print("waiting") 13 semaphore.wait() 14 print("finish \(self.html)") 15 }
これも同じ結果でした
Swift3
1 @IBOutlet var myWeb: WKWebView! 2 let semaphore = DispatchSemaphore(value: 0) 3 let queue = DispatchQueue.global(qos: .default) 4 var html = "empty" 5 6 @IBAction func btn3(_ sender: Any) { 7 self.queue.async { 8 self.myWeb.evaluateJavaScript("document.body.innerHTML;", completionHandler: { (object, error) -> Void in 9 self.html = String(describing: object) 10 print(self.html + "processing") 11 self.semaphore.signal() 12 }) 13 } 14 15 print("waiting") 16 self.semaphore.wait() 17 print("finish \(self.html)") 18 } 19
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。