node.js如何利用闭包进行异步编程

1,089 阅读1分钟

闭包作用:通过创建函数,创建新的作用域

闭包定义:闭包是在另一个函数(成为父函数)中定义的函数,并且可以访问在副函数作用域中声明和定义的变量。

闭包可以访问三个作用域中的变量:1.自己作用域中的2.父函数中的3.全剧作用域中的 闭包的写法有两种方式,一种是函数内部嵌套函数,另一种是函数作为参数传给父函数

function f1(){
    var n = 123;
    function f2(){    //f2是一个闭包
        alert(n)
    }    
    return f2;
}

node中事件驱动编程风格也是利用js闭包辅助进行异步编程

query_finished = function(result){
    do_something_with(result);
}
query('SELECT * FROM posts WHERE id = 1', query_finished)

当将一个函数作为参数传递给另外一个进行I/O操作的函数时,回调函数稍后会被调用,在被调用时,回调函数会记住它自身声明时所在的上下文,并且可以访问其父上下文里的所有变量,这个强大的特性是Node成功的核心。