先上大佬的文章吧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同時執行,可是執行主體不一樣
上一篇大佬文章url
大佬文章spa
回調是一種特殊的函數調用方式,當一個函數做爲參數傳入,後被調用,那這個函數就是回調函數code
示例代碼:
functon fn(fn2){ fn2.call() } // fn 將別人傳給它的 fn2 調用了,這種調用就是回調