javascript - 通过从字符串评估 JavaScript 来取消字符串

标签 javascript objective-c ios

我有使用 stringByEvaluatingJavaScriptFromString 调用的 JS,运行需要大约 9 秒,但如果用户需要,我希望能够立即取消此操作。

然而,整个线程似乎被这个阻塞了。

我准备做任何事情来允许用户取消此操作(例如删除 UIWebView ),但似乎没有任何效果,因为应用程序等待 stringByEvaluatingJavaScriptFromString 返回然后再继续。

最佳答案

不知道如何取消。为了改善UI,从这个UIWebView stringByEvaluatingJavaScriptFromString in background ,

尝试将 JavaScript 分成离散的执行 block ,并使用 JavaScript 计时器将它们管道化,如下所示(JS 代码,而不是 Obj-C):

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();

这将防止您的脚本在执行时阻止用户交互。

有关更多详细信息,请查看该线程,UIWebView stringByEvaluatingJavaScriptFromString in background .

关于javascript - 通过从字符串评估 JavaScript 来取消字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246504/

相关文章:

javascript - 代理 Angular 请求与位于 azurewebsites 的服务 Node

javascript - 如何将 setInterval 转换为 requestAnimationFrame

ios - 在uitableviewcell中隐藏空行

ios - Objective-C : For loop with images image0001. png

ios - 如何将加速度计g力值转换为度

javascript - 仅使用 HTML + JavaScript 的动态电子表格

javascript - 如何访问字典中的特定元素?

ios - 每个线程使用的内存量

ios - 新鲜的App Store提交与应用程序更新

ios - 使用 AVMutableVideoComposition 导出时出现视频方向问题