javascript 异步原理


javascript 异步原理

console.log(1);
setTimeout(function(){for(var i=0;i<1000000000;i++){}},0)
console.log(2);

setTimeout(function(){console.log(7)},0)
console.log(3);
console.log(4);
console.log(5);

运行结果是12345678

一定先运行主线程 再运行异步线程    然后异步线程运行 再去运行主线程  如此循环

ps:异步线程 运行也是同步的 

 
异步运行玩再运行主线程的例子

console.log(1);
setTimeout(function(){for(var i=0;i<3000000000;i++){}},0)
console.log(2);

setTimeout(function(){console.log(7)},0)
console.log(3);
console.log(4);
console.log(5);
VM503:1 1
VM503:3 2
VM503:6 3
VM503:7 4
VM503:8 5
undefined
9VM482:2 99
VM503:5 7
9VM482:2 99

点击输出99

可以发现 异步堵塞后 点击不会输出99  直到异步走完 才会运行主线程99

图片加载和axios异步请求 这个不用等异步走完才会运行主线程   因为图片下载和http请求用不着js 线程    等他们回调 就会进入异步线程