Показать сообщение отдельно
  #5 (permalink)  
Старый 18.05.2021, 11:46
Новичок на форуме
Отправить личное сообщение для DmitryR Посмотреть профиль Найти все сообщения от DmitryR
 
Регистрация: 18.05.2021
Сообщений: 8

Сообщение от ksa Посмотреть сообщение
Можно новый запрос посылать лишь получив ответ на предыдущий запрос...
Так не будет "кучи" запросов без ответов.
Не подскажите как это сделать в коде? JS не знаю практически. И ще такой момент, надо чтобы не просто сервер был готов отправить новый массив на запрос клиента, но и чтобы это еще успевало прорисовываться на графике (использую Chart js). А то получиться так, что сервер посылать будет часто, а браузер отрисовывать не будет успевать.
Может еще сможете подсказать по такой проблеме:
Не перестраивается график ни в какую
function Timer2(){
      xhr.open("GET", "content.bin?r=" + Math.random(), true);
      xhr.responseType = "arraybuffer";
      xhr.onload = function (oEvent) {
        var uint16Array = new Uint16Array(this.response);
        for(var i = 0; i < 256; i++)
        {
          data16Array1[i] = uint16Array[i];
          data16Array2[i] = uint16Array[i+256];
        }
        ChartUpdate(myChart, data16Array1, data16Array2);            
      }
      xhr.send(null);
      idTimer2 = setTimeout(Timer2, 1000);
    }
    function ChartUpdate(chart, data1, data2){
      chart.data.datasets[0].forEach((dataset) => {
        dataset.data.push(data1);
      });
      chart.data.datasets[1].forEach((dataset) => {
        dataset.data.push(data2);
      });
      chart.update();
    }

До этого пробовал так
function Timer2(){
      xhr.open("GET", "content.bin?r=" + Math.random(), true);
      xhr.responseType = "arraybuffer";
      xhr.onload = function (oEvent) {
          var uint16Array = new Uint16Array(this.response);
          for(var i = 0; i < 256; i++)
          {
            data16Array1[i] = uint16Array[i];
            data16Array2[i] = uint16Array[i+256];
          }
          myChart.data.datasets[0].data = data16Array1;
          myChart.data.datasets[1].data = data16Array2;
 
          myChart.update();            
      }
      xhr.send(null);
      idTimer2 = setTimeout(Timer2, 1000);
    }

Вообще никак, хотя вроде все логично по коду
Ответить с цитированием