我一直有个疑问,在大部分讲回调的书都会这么写,js是单线程,每次执行一个任务,从而一个任务处理事件很长,后面的任务也不能执行,所以出现了异步,一个任务结束了会执行他的回调函数,后面的任务不用等他执行完,这样程序执行的顺序就不是代码从上而下的逻辑了
比如f1(f2)
function f1(cb){
settimeout(function(){
f1code
cb()
},delay)
}
我还是不能理解啊,这样f1运行完才能执行f2,既然是单线程,后面的程序比如是f3为什么可以不等f1执行完,f1还在运行啊,线程不会被阻塞吗?还有这样f1运行完就会运行f2,若是f3需要f1处理的数据,f1还没运行完f3已经开始了,不就出错了吗?
这个问题一两句话讲不清楚。 这篇文章还不错,推荐LZ看看:http://www.phpweblog.net/rain...