Как предварительно загрузить ссылку JSON? - PullRequest
0 голосов
/ 21 июня 2019

У меня есть функция, которая должна вызывать ссылку (в формате JSON), дело в том, что я хотел бы иметь возможность предварительно загрузить эту ссылку, чтобы сгладить и сократить время работы при вызове функции.

onSelectionChanged: function (selectedItems) {
    selectedItems.selectedRowsData.forEach(function(data) {
        if(data) {
            colorMe(data.target)     
        }
    });
}

function colorMe(item){
    globalItem = item;
    request('http://blablabla/?format=json',findMaterial);
};  

function findMaterial(data){        
    jq310.each(data, function(table) {
        if (data[table].identifier == globalItem){
            globalData = data[table]
            request('http://another-blablabla/?format=json',findMatchArea);

        };
    });
};

function findMatchArea(areas){                      
    jq310.each(areas, function(area) {

        blablabla

Функция запроса, которую я построил, просто смотрит, если ссылка уже была вызвана, поэтому она перезагружает ее, если имеет значение true.А также отправьте данные по ссылке на вызываемую функцию.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Я наконец нашел способ сделать это правильно, вот оно:

var mylink = 'https://fr.wikipedia.org/wiki/JavaScript';

function preloadURL(link){
    var xhReq = new XMLHttpRequest();
    xhReq.open("GET", link, false);
    xhReq.send(null);
    var jsonObject = JSON.parse(xhReq.responseText);
    return jsonObject;
};

jsonObjectInv = preloadURL(mylink);

И я просто указываю на мою переменную json, чтобы проанализировать ее (действительно быстрее)

function colorMe(item){
    globalItem = item;
    findMaterial(jsonObjectInv);
};  

Проблема решена

0 голосов
/ 21 июня 2019

Если вы хотите загрузить статический JSON-файл, вам следует подумать о его загрузке в верхней части вашего файла. Для этого вы должны хранить данные в глобальной переменной:

let datas;

request('http://blablabla/?format=json', (data) => {
  datas = data
});

onSelectionChanged: function (selectedItems) {
  selectedItems.selectedRowsData.forEach(function(data) {
      if(data) {
        globalItem = data.target;
        findMaterial();
      }
  });
}

function colorMe(item){
  globalItem = item;
};  

function findMaterial(){    
  const data = datas;    
  jq310.each(data, function(table) {
      if (data[table].identifier == globalItem){
          globalData = data[table]
          request('http://another-blablabla/?format=json',findMatchArea);

      };
  });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...