经过一年多的参悟,哥明白了一些JavaScript的秘密。这里分享下,JavaScript是一个披着c语言皮的lisp语言,和ruby一样灵活。他有很多诡秘的特性,这里先介绍的就是他的异步特性。
异步,JavaScript是一个事件驱动的语言。怎么理解呢,他是一个事件队列,在不停的等待触发。有事件来了,相应的代码就会执行。这点很不像c语言和php这类过程式语言和Java、c++这类面向对象的语言。
首先说一个示例。
var a = 123;
(function() {
a = 124;
})();
alert(a);
这段代码会怎么执行呢?第一行代码会赋值123给a ,接着 匿名函数会直接赋值124给a,然后输出 a的值124;
如果使用异步的调用就不会是这样了
function bark (callback) {
setTimeout(function(){
a++;
callback("aa"+ a);
},0);
}
var cb = function(msg) { console.log(msg);}
var a = 123;
bark(cb);
a ++;
var mg = 'bb'+ a;
cb(mg);
这段代码就会异步执行,先输出bb开头的,然后输出aa开头的代码。这种操作一般都是用来将一些事件先执行了,耗时的事情稍后让他自己慢慢执行。
异步的方式还有很多:
1,事件驱动,on事件,omit触发事件。
2,就是setTimeout和setInterval驱动的异步执行策略。
剩下的就是在这两个基础上组合实现的设计模式的实现了。