Читатель IDataRecord закрывается при вызове Linq.First ()

Я знаю, что мой ответ немного запоздал для этого вопроса, но вот замечательная статья на www.html5rocks.com - Глубокое погружение в мутные воды загрузки скрипта .

В этой статье делается вывод о том, что в отношении поддержки браузера лучший способ динамически загружать файл JavaScript без блокировки рендеринга содержимого выглядит следующим образом:

Учитывая, что у вас есть четыре сценария с именем script1.js, script2.js, script3.js, script4.js, тогда вы можете сделать это с помощью async = false:

[
  'script1.js',
  'script2.js',
  'script3.js',
  'script4.js'
].forEach(function(src) {
  var script = document.createElement('script');
  script.src = src;
  script.async = false;
  document.head.appendChild(script);
});

Теперь Spec говорит: загрузите вместе, выполните в порядке, как только все будет загружено.

Firefox & lt; 3.6, Opera говорит: я понятия не имею, что это за «асинхронная» вещь, но так бывает, я выполняю скрипты, добавленные через JS, в том порядке, в котором они добавлены.

Safari 5.0 говорит: «Я понимаю», async ", но не понимают, что он устанавливает значение" false "с помощью JS. Я буду выполнять ваши скрипты, как только они приземлятся, в любом порядке.

IE & lt; 10 говорит: «Не знаю, как« асинхронно », но есть обходной путь с использованием« onreadystatechange ».

Все остальное говорит:« Я твой друг, мы сделаем это по книге ».

Теперь полный код с IE & lt; 10:

var scripts = [
  'script1.js',
  'script2.js',
  'script3.js',
  'script4.js'
];
var src;
var script;
var pendingScripts = [];
var firstScript = document.scripts[0];

// Watch scripts load in IE
function stateChange() {
  // Execute as many scripts in order as we can
  var pendingScript;
  while (pendingScripts[0] && pendingScripts[0].readyState == 'loaded') {
    pendingScript = pendingScripts.shift();
    // avoid future loading events from this script (eg, if src changes)
    pendingScript.onreadystatechange = null;
    // can't just appendChild, old IE bug if element isn't closed
    firstScript.parentNode.insertBefore(pendingScript, firstScript);
  }
}

// loop through our script urls
while (src = scripts.shift()) {
  if ('async' in firstScript) { // modern browsers
    script = document.createElement('script');
    script.async = false;
    script.src = src;
    document.head.appendChild(script);
  }
  else if (firstScript.readyState) { // IE<10
    // create a script and add it to our todo pile
    script = document.createElement('script');
    pendingScripts.push(script);
    // listen for state changes
    script.onreadystatechange = stateChange;
    // must set src AFTER adding onreadystatechange listener
    // else we’ll miss the loaded event for cached scripts
    script.src = src;
  }
  else { // fall back to defer
    document.write('  
    

    

1 ответ

Вот как это использовать:

while(dataRecords.Read()){
    return dataRecords["columnName"].GetDateTime("MaxLogDate");
}
0
ответ дан Marco Salerno 17 August 2018 в 13:06
поделиться
  • 1
    я не хочу читать все записи данных, сначала – Muds 13 July 2018 в 12:24
  • 2
    Он читает первый. – Marco Salerno 13 July 2018 в 12:26
  • 3
    да, я получаю это, но вопрос в том, что мне нужно только сначала, чтобы его вернули, поэтому необходимость запуска его в цикле кажется излишним – Muds 13 July 2018 в 12:27
  • 4
    @MarcoSalerno OP смущен while, и вы делаете их более смущенными, говоря, что цикл должен быть выполнен. Цикл (while) не должен выполняться, необходимо Read(). Вы можете вызвать Read один раз без цикла. Вы в конечном итоге вызываете Read() один раз, потому что вы return из цикла, но если намерение называет его один раз, то, вероятно, более читаемо, чтобы избежать цикла. – GSerg 13 July 2018 в 16:04
  • 5
    Нет, но это передаст ваше намерение гораздо яснее. if (dataRecords.Read()) { return dataRecords["columnName"].GetDateTime("MaxLogDate"); } более понятен, чем while(dataRecords.Read()) { return dataRecords["columnName"].GetDateTime("MaxLogDate"); }. – GSerg 13 July 2018 в 16:11
Другие вопросы по тегам:

Похожие вопросы: