0

我向javascript发送一个值,然后javascript向我返回一个结果。但是,它需要时间,以便返回值(b)保持为空,因为javascript func需要时间。我想我需要创建一个线程来等待结果。下面的代码也不会返回任何内容。ThreadbyEvaluatingJavascript的线程函数

func webViewDidFinishLoad(_ webView: UIWebView) 
{ 
    var b = "" 
    //Threat gcdc 
    DispatchQueue.main.async { 
    b = webView.stringByEvaluatingJavaScript(from: "getURL('\(self.song_number)')")! 
    } 
    print(b) 
} 
+0

尝试使用** evaluateJavaScript(_:completionHandler:)**。我认为你有一些错误。 – Sergey

+0

@Sergey我研究过,但不知道如何使用它。你能提供更多细节吗? –

回答

0

尝试使用evaluateJavaScript(_:completionHandler :)

webView.evaluateJavaScript("getURL('\(self.song_number)')") { (result, error) in 
     if let error = error 
     { 
     print("\(error)"); 
     return 
     } 
     if let song = result as? String 
     { 
     print("\(song)"); 
     } 
}