我从WKWebView触发js,并在块函数中获取结果。在块函数中,我得到了正确的数据。但是,当我将此数据分配给外部外部变量时,我总是得到nil值。

-(id)triggerJS:(NSString *)js
{
    NSLog(@“ JS =%@”,js);

    __block id resultJS = nil;
    [self.webView评价JavaScript:js完成处理程序:^(ID数据,NSError *错误){

                                                            resultJS = [数据副本];
                                                        }
     ];

    如果(resultJS!= nil)
    {
        NSString * str =(NSString *)resultJS;
        NSLog(@“ JS的结果=%@”,str);
    }
    其他
    {
        NSLog(@“ JS的结果=无”);
    }

    返回resultJS;
}




这是为什么?谢谢。

最佳答案

那是因为函数evaluateJavaScript是异步执行的,所以当您执行if (resultJS != nil)时,“ completionHandler”还没有执行,这就是您始终获得nil值的原因。

为此,最好的改进是尝试在“ completionHandler”块内重新编写和调整代码,以管理resultJS数据。

关于javascript - 如何从块函数中获取数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29261233/

10-09 20:44