如何正确编码函数以异步加载

时间:2014-12-11 21:35:32

标签: javascript random colors settimeout asynchronous

我正在尝试使随机颜色功能加载更快。当前页面在页面中加载随机颜色div之前加载页面上的所有内容。该功能有效,但加载需要很长时间。下面是随机颜色函数的当前代码。

body标签中的

是:

onload="return ran_col()" style="!important;"
正文中的

是一个带有脚本的div:

<div id="parallelogram" class="desktop-6 tablet-4 mobile-3">
<div id="logo" class="desktop-6 tablet-4 mobile-3">
<a href="/"><img src="{{ 'logo.png' | asset_url }}" alt="{{ shop.name }}" style="border: 0;"></a>
</div>
</div>
<script type="text/javascript">
function ran_col() { //function name
var color = '#'; // hexadecimal starting symbol
var letters = ['81ADB5','97C29D','E86A72','F1B36C', 'A37EA3', '277F92'];
color += letters[Math.floor(Math.random() * letters.length)];
document.getElementById('parallelogram').style.background = color; }
</script>

我正在尝试将此功能与setTimeout()结合使用,以便页面立即加载随机颜色div。以下是我在how to speed up your javascript的文章中找到的一个例子:

var a = 3, b = 5;
function addNumbers (a, b) { 
return (a+b);
}
// this will run the code immediately
setTimeout('var c = addNumbers(a,b)', 1);
console.log(c);

我尝试了几种配置,但我是javascript的新手,并没有任何运气来实现这一点。有关如何正确设置的任何建议?任何建议将不胜感激。提前谢谢你。

1 个答案:

答案 0 :(得分:1)

你只是将你的函数暗示为setTimeout:

 function ran_col() { //function name
    var color = '#'; // hexadecimal starting symbol
    var letters = ['81ADB5','97C29D','E86A72','F1B36C', 'A37EA3', '277F92'];
    color += letters[Math.floor(Math.random() * letters.length)];
    document.getElementById('parallelogram').style.background = color; }

setTimeout(ran_col,1);