dispatch_async UIWebView loadrequest

Я загружаю javascript, который находится в моем приложении, скрипт попытается найти решение, которое может занять некоторое время. Я не хочу ждать более 5 секунд для этого решения, в этом случае я просто хочу остановить запрос и показать сообщение пользователю.

Я пытался сделать это с помощью NSTimers и с dispatch_async, но запрос UIWebView по-прежнему использует всю мою основную очередь, а NSTimer остановлен тем временем, я жду ответа.

Запрос:

webViewUIView.delegate = self var path = NSBundle.mainBundle().pathForResource("page", ofType: "html") var url = NSURL(fileURLWithPath: path!) var req = NSURLRequest(URL:url!) var queue = NSOperationQueue() dispatch_async(dispatch_get_main_queue()) { println("********CALLING TO LOADREQUEST") self.webViewUIView.loadRequest(req) } 

И мой NSTimer:

 var timer2 = NSTimer() func webViewDidStartLoad(webView: UIWebView) { println("********Creating the Timer") let aSelector : Selector = "cancelWeb" self.timer2 = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: aSelector, userInfo: nil, repeats: false) println("After create the timer") } 

ОтменитьWeb:

 func cancelWeb(){ println("****Before Stop Load") webViewUIView.stopLoading() println("After stopLoading") timer2.invalidate() } 

Мой webViewDidFinishLoad:

  func webViewDidFinishLoad(webView: UIWebView) { webViewUIView.stringByEvaluatingJavaScriptFromString("func('\(obj)')") let result: String = webViewUIView.stringByEvaluatingJavaScriptFromString("document.getElementById('log').innerText")! timer2.invalidate() ... ... 

Когда я запускаю приложение, процесс все еще работает, даже после 5 секунд, заданных в таймере, я вижу только это событие: о создании TImer, After Timer и CALLING TO LOADREQUEST.

Любые идеи о том, как параллельно запустить запрос параллельно с NSTimer? Как вы видите, отправка не работает, может быть, потому, что URL-адрес находится в одном комплекте?

Ну, пока я жду решения, приложение заморожено, просто ждет ответа … который может занять время.

Использование тайм-аута в запросе не работает, потому что соединение установлено правильно, дело в том, что требуется много времени, чтобы получить ответ.

Спасибо, ребята!

2 Solutions collect form web for “dispatch_async UIWebView loadrequest”

В вашем коде отсутствует еще одна функция делегата UIWebView. Вы можете добавить timer2.invalidate() в

 func webView(_ webView: UIWebView, didFailLoadWithError error: NSError) 

Хорошо, ребята, я создал Рабочего в моем Javascript-коде, поэтому я могу обрабатывать его как новые потоки, но не в iOS (что было невозможно сделать с помощью UIWebView). Решение находится здесь: iOS Javascript Workers Высокий процессор после завершения ()

  • Не удалось полностью восстановить использование памяти из UIWebView
  • Как я могу центрировать элемент SVG-файла, отображаемого в UIWebView?
  • Каков наилучший подход для анализа XML / 'scraping экрана в iOS? UIWebview или NSXMLParser?
  • Кто-нибудь нашел способ загрузить HTTPS-страницы с недопустимым сертификатом сервера с помощью UIWebView?
  • UIWebView не обнаруживает текстовое поле на веб-сайте
  • Автоматическая анимация с iBooks Author
  • UIWebView как просмотр нижнего колонтитула в разделе для таблицы. Странный сбой - прилагается журнал аварий
  • Несколько вкладок в UIWebView в iOS
  • скрыть панель инструментов внизу UiWebView при прокрутке вниз
  • Утечка UIWebView IOS
  • Политика поиска Google
  • Interesting Posts

    Как получить элемент с максимальным id?

    Неправильная рамка при отклонении модально представленного контроллера представления

    Задайте два ограничения UIButton?

    Получить XML со специальными символами

    Недопустимая работа UITextView не работает

    Диалог Unity 5 «Build & Install iPhone player» не исчезает

    Отключить параллакс iOS в UIAlertController

    Рисование гладкой кривой

    UITextView плохое смещение содержимого после анимационного просмотра

    в чем разница между NSCachesDirectory и NSDownloadsDirectory в iOS?

    Как iOS 7 реализует элементы пользовательского интерфейса, чтобы они выглядели по-разному в зависимости от того, с какими SDK вы скомпилируете?

    iOS: springWithDamping как анимация для анимации KeyFrame

    Почему анимации на границах UILabel работают только при увеличении размера?

    Как определить, поддерживается ли атрибут автозапуска HTML5?

    «Ionic run ios» Как добавить профили подготовки

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.