今天学习了下关于网页性能的优化,其中就提到了javascript的优化,而关于javascript的优化又不得不提到一个关键的东西,同步编程与异步编程。
之前在网上看过很多人写的关于javascript的异步编程,当然由于我现在还属于初学阶段,还有很多东西没有学习到。
然后我今天也来写写我理解的关于javascript的异步编程。
javascript的语言的执行环境是单线程的,也就是说代码的运行会根据所排列的顺序,一个一个的执行,只有当上一个任务完成时,才会进入下一个任务,这就很容易导致网页卡顿,也就是整个进程被卡在了某一段需要执行很久的代码处,而无法跳过这段代码去执行后面的代码。为了解决这个问题,javascript中又出现的异步模式这种代码执行模式。
在我的记忆中,我最先接触到的异步编程,就是setTimeout和setInterval这两个函数。setTimeout这个方法用于在指定的毫秒数后调用预先写好的函数或者执行其他的代码一次。setInterval这个方法用于每过指定的毫秒数后调用预先写好的函数或者执行其他的代码。
具体用法如下:
//这段代码会在之后的代码执行了一秒后弹出一次对话框。
setTimeout("alert('已经过去1秒了')",1000);//其中,1000代表1000毫秒后执行自定义的代码。1000前面的逗号前面为自定义代码。
//这段代码会每过一秒打印一次“又过了1秒”。
setInterval(function(){
console.log("又过了1秒");
},1000);
这是我所了解到的第一个异步编程,这样,我们就能在执行一段代码的同时,执行另外一段代码,从而达到性能的优化。
第二种就是回调函数,说起回调函数,那就不得不说到Ajax了,我真正的接触回调函数就是在当初学习Ajax的时候,通过Ajax发送信息来达到局部刷新时用到的就是回调函数。网络上对回调函数的定义是“回调函数就是一个通过函数指针调用的函数”,而我对回调函数的理解就是:首先要将一个函数作为另外一个函数的回调函数,然后当这个函数达到某个条件时就执行这个函数的回调函数。
比如有两个函数fun1和fun2:
function fun1(){
console.log("The callback function");
};
function fun2(flag,fun){
if(flag){
fun();
}
};
fun2(fun1);
当然还有其他的方法,由于知识面不足,我也还没有理解,而且这次写的肯定也还有问题,不过作为第一篇博客,我还是比较满意的。