js是单线程就像一条流水线,仅是一条流水线。不管是同步和异步,做事情的时候只有一条流水线(单线程),同步和异步的差别就在于这条流水线上各个流程的执行顺序不同。看到“异步”,首先想到的词可能是“一边...一边...”,比如‘小花一边听歌一边画画’,好像没啥毛病,异步就是这样,其实这是不对的。
同步:
<script>
function num1(){
console.log(1)
}
num1()
function num2(){
console.log(2)
}
num2()
function num3(){
console.log(3)
}
num3()
function num4(){
console.log(4)
}
num4()
</script>
异步:setTimeout和setInterval是最基础的异步,定时器虽然是0秒,然并暖。
<script>
function num1(){
setTimeout(function(){
console.log(1)
},0)
}
num1()
function num2(){
console.log(2)
}
num2()
function num3(){
console.log(3)
}
num3()
function num4(){
console.log(4)
}
num4()
</script>
出现上面的异步问题,怎么解决呢?我就要输出1,2,3,4
<script>
function num1() {
setTimeout(function () {
console.log(1)
num2()
num3()
num4()
}, 0)
}
num1()
function num2() {
console.log(2)
}
function num3() {
console.log(3)
}
function num4() {
console.log(4)
}
</script>
换汤不换药,依法则套入工作即可,祝愉快顺利。