闭包与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);