同步和非同步

yangkangkang發表於2024-11-16

一、javascript中為什麼需要引入非同步?

1.我們知道js是單執行緒語言,只能同時做一件事。但在遇到需要等待(網路請求,定時任務)不能卡住,所以引入了非同步

2.非同步就是為了解決單執行緒需要等待的問題(如:網路請求,定時任務)

3.非同步是基於回撥 callback 函式形式

二、同步和非同步

1.非同步:不會阻塞程式碼執行,

//非同步
console.log(100)
setTimeout(()=>{ // 回撥函式
    console.log(200)
},1000)
console.log(300)

程式碼依次輸出: 100 、300 、200

2.同步:會阻塞程式碼執行,上一行程式碼沒執行完不會往下執行

//同步
console.log(100)
alert(200)
console.log(300)

alert 彈窗不關閉,下一行程式碼不會執行

三、非同步應用場景

  1.網路請求,如:ajax、圖片載入

//ajax
console.log('start')
$.get('./data1.json',function(data1){
      console.log(data1)
})
console.log('end')
//圖片載入
console.log('start')
let img = document.createElement('img')
img.onload = function(){
      console.log('loaded')
}
img.src = '/xxx.png'
console.log('end')

  2. 定時任務,如setTimeout、setInterval

//setTimout
console.log(100)
setTimeout(function(){
      console.log(200)
},1000)
console.log(300)
//setInterval
console.log(100)
setInterval(function(){
     console.log(200)
},1000)
console.log(300)

相關文章