等待WKWebView evaluateJavaScript完成

时间:2018-03-11 19:23:32

标签: swift xcode webkit

我有一个问题,现在几天来一直困扰着我。我正在尝试在我的Swift项目中使用WKWebView。以下是我的代码:

var items: [String] = []
    for i in 0...8 {
        web_view.evaluateJavaScript("document.getElementsByClassName('channels-content-item yt-shelf-grid-item')[\(i)].innerHTML") { (result, error) in
            //print(result ?? "nil")
            //print(error ?? "nil")

            let string_result: String = String(describing: result!)
            items.append(string_result)
            num += 1
            //print(string_result)

        }
    }

    print(items)

我的问题是程序不会等到evaluateJavaScript函数在转到print(items)之前完成,即使items数组通过这些函数填充。我能用这种方式工作吗? 非常感谢任何帮助,提前谢谢

1 个答案:

答案 0 :(得分:0)

您认为完成处理程序内部有什么是在不同的线程上运行的,这意味着它在打印发生后即在运行。由于注入javascript需要更长的时间,因此您的打印很有可能总是首先发生。