javascrip异步简单例子的疑问
我看了关于js异步的概念 ,但是对下面的例子产生了疑问
function f1(callback){
setTimeout(function(){
console.log("f1 task codes")
callback();
},1000)
}
function f2(){
console.log("f2 task codes")
}
f1(f2);
所谓异步就是f1如果有较长时间的任务的话,f2是不会阻塞的,也就是说f2会先执行,等f2执行完,f1再继续执行,这样的话 上面的代码结果应该是 先f2 task codes,然后再f1 task codes. 但是结果却是相反 没有体现出JS异步功效
------解决方案--------------------哪里有体现异步这个概念?
console.log("f1 task codes")
callback();//
等价于f2()
明明是先执行的f1 task codes然后才执行f2 task codes所以得到的结果肯定是f1啊
------解决方案--------------------你这个不是异步~
稍微修改一下:
function f1(callback){
setTimeout(function(){callback()},1000);
console.log("f1 task codes")
}
这样就能异步执行了
------解决方案--------------------这样也没体现出异步吧
------解决方案--------------------还是先执行f1 ,再执行了f2
------解决方案--------------------你的callback 是在 f1里的 console.log后面执行的。。。
楼主可以把f2单独出来执行 就有效果了
------解决方案--------------------
你是不是要这样
function f1(callback){
setTimeout(function(){
console.log("f1 task codes")
},1000);
callback();
}
function f2(){
console.log("f2 task codes")
}
f1(f2);