gpt4 book ai didi

javascript - 如何从 block 函数中获取数据?

转载 作者:行者123 更新时间:2023-12-03 10:29:56 25 4
gpt4 key购买 nike

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

- (id)triggerJS:(NSString*)js{    NSLog(@"JS = %@",js);    __block id resultJS = nil;    [self.webView evaluateJavaScript:js completionHandler: ^(id data, NSError* err) {                                                            resultJS = [data copy];                                                        }     ];    if (resultJS != nil)    {        NSString* str = (NSString*)resultJS;        NSLog(@"Result of JS = %@", str);    }    else    {        NSLog(@"Result of JS = nil");    }    return resultJS;}

这是为什么呢?谢谢。

最佳答案

这是因为函数evaluateJavaScript是异步执行的,所以当你执行if (resultJS != nil)时,“completionHandler "尚未执行,这就是你总是得到 nil 值的原因。

对此的最佳改进是尝试在“completionHandler” block 内重写和调整代码,该 block 将管理 resultJS 数据。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com