передача {queue: false} в jQuery show ()

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

0
задан HeyJude 7 April 2019 в 15:54
поделиться

1 ответ

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

function showLoader() {
  console.log("Show");
  $('#loader').show();
}

function hideLoader() {
  console.log("Hide");
  $('#loader').hide();
}

function heavyLifting() {
  var num = 0;
  console.log('started heavyLifting');
  for (var i = 0; i < 100000000; ++i) {
    num += Math.random();
  }
  console.log('finished heavyLifting');
  return num;
}

var start = Date.now();

function log(str) {
  var dt = Date.now() - start;
  // Log Number of Milliseconds since start and a String to console
  console.log(dt + ": " + str);
}

$(function() {
  log("Page Loaded");
  $(".start.btn").click(function() {
    log("Start Click Event");
    log("Show Loader");
    showLoader();
    log("Start Heavy Lift");
    var lift = heavyLifting();
    log("End Heavy Lift");
    setTimeout(function() {
      log("Hide Loader");
      hideLoader()
    }, 1000);
    console.log(lift);
    log("End Click Event");
  });
});
.hourglass-background {
  position: fixed;
  background: rgba(250, 250, 250, 0.8);
  width: 100%;
  height: 100%;
  z-index: 99;
}

.hourglass {
  position: absolute;
  top: 40%;
  left: 48%;
  transform: translate(50%, -50%);
  z-index: 100;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="loader" style="display: none;">
  <span class="hourglass-background"></span>
  <span class="hourglass">&#8987</span>
</div>
<div>
  <button class="btn start">click me</button>
</div>

Обновление

очередь (по умолчанию: true)

Логическое значение, указывающее, помещать ли анимацию в очередь эффектов. Если false, анимация начнется немедленно. Начиная с jQuery 1.7, опция очереди также может принимать строку, и в этом случае анимация добавляется в очередь, представленную этой строкой. Когда используется произвольное имя очереди, анимация не запускается автоматически; Вы должны позвонить .dequeue("queuename"), чтобы запустить его.

Надеюсь, это поможет.

0
ответ дан Twisty 7 April 2019 в 15:54
поделиться
Другие вопросы по тегам:

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