我从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/