Emre Önder
Emre Önder

Reputation: 2537

Thread for StringbyEvaluatingJavascript Function

I'm sending a value to javascript and then javascript return a result to me. However, It takes time so that the return value (b) stay null because javascript func needs time. I think I needed to create a thread to wait the result. Below code also doesn't return anything.

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

Upvotes: 0

Views: 192

Answers (1)

Sergey
Sergey

Reputation: 1617

Try to use 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)");
      }
}

Upvotes: 0

Related Questions