简单理解JavaScript的异步、回调是什么意思
日期: March 4, 2019 作者:网站维护
用JS写一个3秒钟后控制台输出1,然后再过三秒控制台再输出2的程序
用到window的对象的setTimeout这个函数,setTimeout(function, delay),有两个参数,第一个作为参数是一个函数,被称为回调函数。
如果这么写就不对了:
setTimeout(function(){console.log('1')}, 3000)
setTimeout(function(){consoel.log('2')}, 3000)
setTimeout是异步的,setTimeout的回调的函数“注册”之后马上执行下一步setTimeout语句了。就好像告诉秘书让秘书来等3秒执行回调函数,而他自己不再等马上执行下一条语句了。
显然需要这么写,
setTimeout(function(){
console.log('1');
//回调函数里再加一个setTimeout
setTimeout(function(){
console.log('2');
}, 3000)
},3000)
可以看到回调里加了回调,想想看,如果要写很多个隔三秒种,要写多少层。大家称这种写法为回调地狱(hells)
不如这样写:
var a = function(){
console.log('1');
setTimeout(b, 3000);
};
var b = function(){console.log('2')};
setTimeout(a,3000)
广告内容为平台自动生成