【发布时间】:2020-08-26 20:44:03
【问题描述】:
有时应该强制停止正在评估的脚本,但我找不到实现此目的的方法。有人指出JSContextGroupSetExecutionTimeLimit 可能有效,但它不在我的测试中,有人可以帮忙吗?
另一个参考:https://github.com/phoboslab/JavaScriptCore-iOS/issues/14
我的代码:
int extendTerminateCallbackCalled = 0;
static bool extendTerminateCallback(JSContextRef ctx, void *context)
{
extendTerminateCallbackCalled++;
if (extendTerminateCallbackCalled == 2) {
JSContextGroupRef contextGroup = JSContextGetGroup(ctx);
JSContextGroupSetExecutionTimeLimit(contextGroup, .200f, extendTerminateCallback, 0);
return false;
}
return true;
}
+ (void)stop
{
JSGlobalContextRef ref = [_context JSGlobalContextRef];
JSContextGroupRef contextGroup = JSContextGetGroup(ref);
JSContextGroupSetExecutionTimeLimit(contextGroup, .200f, extendTerminateCallback, 0);
}
【问题讨论】:
标签: ios objective-c webkit javascriptcore jscontext