Почему Ajax jQuery является настолько медленным на IE7?

Вам нужно

 do {

     let json = try JSONSerialization.jsonObject(with: data!, options: []) as! [String:[String]]
      let arr1 = json["Categories"]!
      let str1 =  arr1.joined(separator: ":")
       print(str1)
     // or 
      let decoded = try JSONDecoder().decode(Root.self, from: data)
       let str =  decoded.categories.joined(separator: ":")
       print(str)

 } catch {
     print(error)
 }

или использовать

struct Root: Codable {
    let categories: [String] 
    enum CodingKeys: String, CodingKey {
        case categories = "Categories"
    }
}
12
задан Shog9 24 April 2009 в 20:46
поделиться

4 ответа

У меня была такая же проблема с медленным движком jscript ie7. Я добавил всплывающее окно статуса для человека. Я обновляю окно статуса, поскольку JS продолжается частями. Псевдокод:

  1. Создайте контейнер состояния, используя вашу библиотеку favit js. Я предпочитаю YUI. Смотрите их контейнер api.
  2. Сделайте некоторые из ваших данных загрузки. - сначала нужно разбить его на куски
  3. Обновите всплывающее окно статуса. (Увеличьте% выполненной загрузки, увеличьте линейный индикатор и т. Д.) Обратите внимание, что экран, вероятно, не изменится в этот момент, так как ваш поток JS все еще работает.
  4. Далее, вызовите
var t = setTimeout("next_step(2)", 0);
// Where arg of 2 would mean do the second step
// This will yield to the browser, and the display will then be updated.
// If you want to maintain the value of "this" in the function, then do
// something like
var t = setTimeout("next_step.call(MyContext, 2)", 0);
// using call to set the function's context.

Суть в том, что пользователь увидит что-то меняющееся на экране. Заметьте, что шаг уступки с таймаутом 0 занимает довольно много времени, условно говоря. Так что мой код тестирует браузер и выполняет больше работы на блок, если это что-то кроме IE.

Очень важно предоставить изменяющуюся обратную связь пользователю. В противном случае они думают, что это займет больше времени, чем на самом деле.

HTH,

Ларри

8
ответ дан 2 December 2019 в 05:04
поделиться

На самом деле ты мало что можешь сделать. Механизм javascript в IE намного медленнее, чем любой другой (на самом деле, это отстой). Вы можете попробовать IE8. Это лучше лучше ... незначительно ...

3
ответ дан 2 December 2019 в 05:04
поделиться

Как преодолеть эту проблему? Любая помощь будет принята с благодарностью.

Обнаружьте IE7 при загрузке страницы и предоставьте отдельное предложение, что пользователи, которые не любят медленную загрузку, должны обновить.

16
ответ дан 2 December 2019 в 05:04
поделиться

Мне пришлось бы увидеть реальный код, но столкнувшись с аналогичной проблемой, мне пришлось избавиться от jQuery.load () . Вместо этого я использовал jQuery.get () с типом данных «html» и написал свой собственный обратный вызов, в который я ввел данные через .innerHTML . При этом я обнаружил еще одну ошибку (это был тег