關於異步和回調

先上大佬的文章吧ajax

大佬文章json

 

異步和同步

異步是指一個不等一個任務返回結果(成功/失敗/或其餘結果),就直接執行下一句代碼。
同步則是前者執行完拿到結果(返回值)了以後,再執行下一句代碼。瀏覽器

異步常見是在定時器和ajax中會產生
異步狀況下,代碼的書寫順序和執行的順序是不一樣的
能夠經過回調拿到異步的結果,按同步的順序執行網絡

 

示例代碼:異步

讓異步代碼按順序執行async

function a (fn){
    setTimeout(function(){
        console.log('顯示a')
        fn.call()
    },3000)
}

a(function b (){
    console.log('顯示b')
})

//顯示a
//顯示b

 

ajax使用異步函數

// 原代碼——同步的寫法
function taskB(){
  var response = $.ajax({
    url:"/data.json",
    async: false // 注意這裏 async 爲 false,表示是同步
  })
  return response // 十秒鐘後,返回 response
}

taskA()
taskB()
taskC()

//執行順序是A—B—Ajax—C


//改爲異步

// 異步的寫法
function taskB(){
  var result = $.ajax({
    url:"/data.json",
    async: true // 異步
  })
  return result // 必定要注意,如今的 result 不是上面的 response
}
taskA()
taskB()
taskC()

//執行順序是A—B—C JS引擎執行
//           —Ajax  瀏覽器的網絡請求模塊執行

//這裏C和Ajax同時執行,可是執行主體不一樣

 

回調(call back)

上一篇大佬文章url

大佬文章spa

 

回調是一種特殊的函數調用方式,當一個函數做爲參數傳入,後被調用,那這個函數就是回調函數code

 

示例代碼:

functon fn(fn2){
    fn2.call()
}

// fn 將別人傳給它的 fn2 調用了,這種調用就是回調
相關文章
相關標籤/搜索