我有一个需要调用链接(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,则会重新加载它。并且还将数据从链接发送到被调用的函数。
答案 0 :(得分:0)
如果您要加载静态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);
};
});
};
答案 1 :(得分:-1)
我终于找到了一种正确执行此操作的方法,这里是:
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);
};
问题解决了