取消stringByEvaluatingJavaScriptFromString
我有一个使用stringByEvaluatingJavaScriptFromString调用的JS,运行大约需要9秒,但是如果用户需要,我希望能够立即取消它 然而,似乎整个线程都被这个阻塞了取消stringByEvaluatingJavaScriptFromString,javascript,objective-c,ios,Javascript,Objective C,Ios,我有一个使用stringByEvaluatingJavaScriptFromString调用的JS,运行大约需要9秒,但是如果用户需要,我希望能够立即取消它 然而,似乎整个线程都被这个阻塞了 我准备做任何事情来允许用户取消此操作(例如,删除UIWebView),但在应用程序等待stringByEvaluatingJavaScriptFromString返回后再继续操作时,似乎什么都不起作用。不确定如何取消它。为了改善用户界面,从这个 尝试将您的JavaScript拆分为离散的执行块,并使用Jav
我准备做任何事情来允许用户取消此操作(例如,删除UIWebView),但在应用程序等待stringByEvaluatingJavaScriptFromString返回后再继续操作时,似乎什么都不起作用。不确定如何取消它。为了改善用户界面,从这个 尝试将您的JavaScript拆分为离散的执行块,并使用JavaScript计时器将其管道化,如下所示(JS代码,而不是Obj-C):
var i=0;
var操作=函数(){
开关(一){
案例0:
//执行代码的第一部分
打破
案例1:
//执行代码的第二部分
打破
案例2:
//执行代码的第三部分
打破
等
}
//准备执行下一个块
i++;
如果(i<总零件){
设置超时(操作,0);
}
};
操作();
这将防止脚本在执行时阻止用户交互
有关更多详细信息,请检查该线程
var i = 0;
var operation = function() {
switch (i) {
case 0:
//do first part of code
break;
case 1:
//do second part of code
break;
case 2:
//do third part of code
break;
etc...
}
//prepare to execute next block
i++;
if (i < TOTAL_PARTS) {
setTimeout(operation, 0);
}
};
operation();