我设置了 2 个 UIWebViews,第一个是控制第二个。他们通过 ajax 请求进行通信。
我想在第二个 WebView 中加载一个网站,然后继续执行其他任务。不幸的是,这正在崩溃。它正在崩溃,因为 Web 线程在收到响应后立即被第一个占用。第二种来不及加载网页,导致死锁。
我想延迟响应,直到第二个 WebView 完全加载网页。目前,第二个 WebView 在第一个 WebView 获取并响应后立即开始加载(即在 Web 线程被释放时)。
是否可以“暂停”/“暂停”当前(第一个 WebView)执行,直到第二个 WebView 完成加载?这意味着也开始执行第二个 WebView。
事件:
- 第一个 WebView 发送命令加载网页(使用同步 AJAX 命令)
- Web 线程被第一个 WebView 的任务阻塞
- 命令的执行和响应的计算
- 返回响应
- 第二个 WebView启动加载网页
- 僵局
我希望事件 5 在事件 4 之前。这可能吗?
解决方案: 正如您在评论中看到的那样,我通过使 then work concurrently解决了我的问题。基本上我不得不使用Grand Central Dispatch (GCD)。另一种选择是使用NSOperationQueues来实现它它可以让您更好地控制执行流程,但实现起来往往更复杂。
有用的文献: