首頁 >web前端 >js教程 >原生JS異步和單線程詳解

原生JS異步和單線程詳解

小云云
小云云原創
2018-03-07 14:40:501902瀏覽

什麼是異步(對比同步),本文主要和大家分享原生JS異步和單線程詳解,希望能幫助大家。

//异步
console.log(100);
setTimeout(function(){
console.log(200);
},1000);
console.log(300);
//同步
console.log(100);
alert(200);
console.log(300);//同步会阻塞等待

何時需要非同步

--在可能發生等待的情況

#--等待過程中不能像alert一樣阻塞程式的執行

# --因此所有的「等待的情況」都需要非同步

前端使用非同步的場景

定時任務:

setTimeout/setInterval
console.log(100);
setTimeout(function(){
console.log(200)
},1000);
console.log(300);
//同步
console.log(100);
alert(200);
console.log(300);
网络请求:ajax请求,动态<img>加载
//ajax
console.log(&#39;start&#39;);
$.get(&#39;xxx&#39;,function(){
console.log(data);
})
console.log(&#39;end&#39;);//startenddata
//img
console.log(&#39;start&#39;);
var img = document.creatElement(&#39;img&#39;);
img.onload = function(){
console.log(loaded);
}
img.src = &#39;xxxxxxxxxxxxxxxx&#39;;
console.log(&#39;end&#39;)//startendloaded
事件绑定
console.log(&#39;start&#39;);
var btn1 = document.getElementById(&#39;btn1&#39;);
btn1.addEventListener(&#39;click&#39;,function(){
console.log(&#39;clicked&#39;);
})
console.log(&#39;end&#39;)
异步和单线程
同步和异步的区别?分别举一个同步和异步的例子
同步会阻塞代码执行,而异步不会
alert是同步,setTimeout是异步
一个关于setTimeout的笔试题
console.log(1);
setTimeout(function(){
console.log(2)
},0);
console.log(3);
setTimeout(function(){
console.log(4);
},1000);
console.log(5);
//13524

前端使用非同步的場景有哪些

定時任務:setTimeout,setInterval

ajax請求,img載入

#事件綁定

相關推薦:

##實例詳解js非同步程式設計

幾個JavaScript非同步載入相關問題

#單執行緒JS執行題詳#

以上是原生JS異步和單線程詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn