Используйте Javascript, чтобы обновить sh окно после того, как все oop завершит работу. - PullRequest
0 голосов
/ 28 февраля 2020

Я пишу новости для компании, в которой я работаю, и пытаюсь заставить страницу переосмыслить sh после того, как она перебирает всю длину массива JSON. В настоящее время все работает, но я не совсем уверен, где команда refre sh будет go. Где это в данный момент не выполняется. Вот мой соответствующий код:

var i = 0,
    d = null,
    x = null,
    interval = 3000;

    console.log('welcome');

    $(document).ready(function(){
      fetch();
      console.log('fetching');
    });

    function fetch(){
      // get the data *once* when the page loads
      $.getJSON('info.json?ver=' + Math.floor(Math.random() * 100), function(data){
        // store the data in a global variable 'd'
        d = data[0];
        console.log('results');
        console.log(data);
        // create a recurring call to update()
        x = setInterval(function(){
          update()
        }, interval);
      });
    }

    function update(){
      console.log('update starting');
      // if there isn't an array element, reset to the first once
      if (d && !d[i]){
        console.log('got the D');
        clearInterval(x);
        i = 0;
        fetch();
        return;
        if(d[i] >= d.length){
          // refresh the window if the variable is longer than the array
          console.log('refreshing');
          window.location.reload();
        }
      }
      // remove the previous items from the page
      $('ul').empty();
      // add the next item to the page
      $('ul').append(
        '<li>' + d[i]['news']
        + '</li>'
      );
      // incriment for the next iteration
      i++;

    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='news'>
  <ul></ul>
</div>

Ответы [ 3 ]

0 голосов
/ 28 февраля 2020
$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100), function(data){
    //your code
}).done(function( data ) {
    window.location.reload();
});

Функция, написанная в секции done, будет выполнена после завершения всего кода из основной функции

0 голосов
/ 28 февраля 2020

Я понял, что это происходит в направлении, которого я изначально не планировал. Я понял, что как только я включил в свой файл. json ГСЧ для контроля версий, мне фактически не нужно было обновлять sh страницу. Я использую итеративное l oop, поэтому, как только l oop завершит его, он вернется к вершине и снова откроет info.json. Мой RNG выглядит следующим образом:

$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100) + '.' + Math.floor(Math.random() * 100), function(data){
//code here
}

Это означает, что каждый раз, когда $.getJSON вызывается, он смотрит на номер версии, отличный от того, что был раньше, что вызывает проверку и загрузку сервера, что сохраняет вещи в обновление файла на экран своими силами. Сетевые источники выглядели так:

info.json?ver=1.23
info.json?ver=2.42
info.json?ver=1.15

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

0 голосов
/ 28 февраля 2020

Если я понял ваш вопрос, вам просто нужно знать, где ваша функция перезагрузки правильная?

Ну, это window.location.reload();

...