javascript - 仅在另一个脚本完成后运行脚本
问题描述
我的 HTML 标头中有多个脚本。两个令人关注的问题如下:
1) JS 脚本('Infected Data')产生一个带有数据的对象。数据是从谷歌脚本文件中检索和计算的,所以自然需要一点时间。
2) 生成地图的脚本。该地图根据受感染对象数据的值进行颜色编码。
问题是地图在我得到对象之前加载,所以它没有颜色。
HTML 标头:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>JQVMap - World Map</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link href="../dist/jqvmap.css" media="screen" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="../dist/jquery.vmap.js"></script>
<script type="text/javascript" src="../dist/maps/jquery.vmap.world.js" charset="utf-8"></script>
<script type="text/javascript" src="js/jquery.vmap.sampledata.deaths.js"></script>
<script type="text/javascript" src="js/jquery.vmap.sampledata.infected.js"></script>
<script>
jQuery(document).ready(function () {
jQuery('#vmap').vectorMap({
map: 'world_en',
backgroundColor: '#333333',
color: '#ffffff',
hoverOpacity: 0.8,
selectedColor: '#3498DB',
enableZoom: true,
showTooltip: true,
scaleColors: ['#F3A291', '#FF4F3B'],
values: infected_data,
normalizeFunction: 'polynomial',
onLabelShow: function(event, label, code)
{
// Remove for Russian Joke
/*if (code == 'ru')
{
// Plain TEXT labels
label.text('Bears, vodka, balalaika');
}
else*/
label.html('<div class="map-tooltip"><h1 class="header">'+label.html()+'</h1><p class="description">Infected: '+infected_data[code]+'</p><p class="description">Deaths: '+death_data[code]+'</p></div>');
/*else if (code == 'us')
{
label.html(label.html()+' (GDP - '+sample_data[code]+')');
}*/
},
/*onRegionOver: function(event, code)
{
if (code == 'ca')
{
event.preventDefault();
}
}, */
});
});
</script>
</head>
受感染的数据 JS 文件:
var infected_dataINT = {};
var infected_data = {};
const url = "https://script.google.com/macros/s/AKfycbzsyQNJwDvQc5SvNGEDZZOoNI3XxNar9PA9sRucZx7mgzfWpFQ/exec";
// Declare an async function
const getData = async () => {
// Use the await keyword to let JS know this variable has some latency so it should wait for it to be filled
// When the variable is fetched, use the .then() callback to carry on
const DataJSON = await fetch(url).then(response =>
response.json()
)
return await DataJSON
};
console.log(getData());
getData().then(result => {
console.log(result);
infected_dataINT = result;
console.log(infected_dataINT);
function toString(o) {
Object.keys(o).forEach(k => {
if (typeof o[k] === 'object') {
return toString(o[k]);
}
o[k] = '' + o[k];
});
return o;
}
console.log(toString(infected_dataINT));
infected_data = toString(infected_dataINT);
})
我怎样才能减慢jQuery(document).ready(function () {....
运行后才<script type="text/javascript" src="js/jquery.vmap.sampledata.infected.js"></script>
运行
解决方案
在从服务器收到响应后,您可以动态地将脚本元素附加到文档中,如下所示:
let script = document.createElement('script');
script.src = 'myJqueryFile.js';
document.head.appendChild(script);
您只需将这些 jquery 代码放入 .js 文件中。
推荐阅读
- react-native - 使用 Expo 在 Android 上的 react-native-paper 图标错误
- javascript - 如何获得与谷歌搜索栏下显示的相同的预测搜索数据
- r - 创建具有特定数据格式的关联图
- r - 在 r 中创建正负条形图
- json - JSON对象Swift中的JSON对象
- ionic-framework - 动态更改侧面时,Ionic 5 离子菜单无法正确设置动画
- python - 为什么函数有时返回 0 有时返回 False?
- c# - 如何让 Selenium 与 ASP.NET Core 一起工作?
- python - Python 错误出现在 Rust Cargo 中
- c# - 如何将字典 int 值添加到现有的 int 变量