闭包与Promise

闭包与Promise

一直以为这两个概念很难懂,一直浅尝辄止,直到看了廖雪峰的js博客,悟了。

闭包是什么?闭包是函数的本地变量持久化的过程

function get_cnt(){
    var a=0;
    function cnt(){
        return ++a;
    }
    return cnt;
}
var b=get_cnt();
b();//1
b();//2  我们发现我们把a拿出来用了,但是a实际上我们没办法直接改变,所以叫闭包

我们发现我们把a拿出来用了,但是a世界上我们没办法直接改变,所以叫闭包

promise是什么?promise是JavaScript函数编程的一种巧妙用法

function async_step(suc_callback,fail_callback){
    setTimeout(suc_callback,1000);//一秒钟之后执行suc_callback,异步不阻塞
}//传统写法
async_step(suc_callback);//传统调用方法,如果suc_callback也需要传函数就比较麻烦

function async_step(){
    return new Promise(function(suc_callback){
        console.log('第一步执行');
    	setTimeout(suc_callback,5000);    
    });
}//promise写法
//async_step().then(suc_callback);//好处在于分离了执行代码与结果处理代码
//如果suc_callback仍然是异步的那我们可以继续链式
function async_step2(){
    return new Promise(function(suc_callback){
        console.log('第二步执行');
        setTimeout(suc_callback,5000);
    });
}
function suc_callback(){
    console.log('完成');
}
async_step().then(async_step2).then(suc_callback);