经过一年多的参悟,哥明白了一些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驱动的异步执行策略。
剩下的就是在这两个基础上组合实现的设计模式的实现了。