1. 程式人生 > >淺談ajax同步、異步的問題

淺談ajax同步、異步的問題

con 處理 服務器 async tro 分開 按順序 spa 順序

最近實習的時候看到過firefox的同步、異步的警告,想著概念不是那麽清楚,於是整理了一下ajax同步異步方面的知識。我是小白,做個筆記。

首先就是概念問題,ajax根據async進行區分同步和異步過程,當async=true異步,async=false為同步,ajax默認async為異步。W3C推薦使用異步方法。

那麽這兩種情況分別在那種情況下使用呢?我自己的理解是這樣的:

異步:ajax不會影響整個頁面的加載,相當於和瀏覽器加載或者用戶操作分開走,互不相幹,體現在用戶角度就是不會有什麽卡頓的感覺仿佛無事發生。

同步:那就與異步相反,他和加載處於同一條線上,等這位大爺過了馬路,後面的人才能接著走,就是在加載它的時候,全部的過程都等停下來,也就是假死狀態。

也就是說在實際應用中,異步是比同步用的多很多,那麽同步用到的情況是什麽呢? 在我的理解上來說,同步是能避免很多意想不到的情況的,也就是解決那些想不通的錯誤。

console.log(1); $.ajax({ url: ‘‘, async: false, success: function() { console.log(2); } }); console.log(3);
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作

來看一個典型的同步代碼

console.log(1); 
$.ajax({          
    url: ‘‘,
    dataType:"json",        
    async: false,          
    success: function() {                  
        console.log(2);          
    }  
    });  
console.log(3);//輸出1 2 3
    

同步就是下了死命令要按順序來,就是上面那樣的輸出順序,當然這只是在json格式下的,換成jsonp它就會輸出1 3 2了,具體是因為jsonp自身只有異步的模式。

異步就不一樣了,它有可能發生跳躍的情況,也就是說在發送ajax的之後,服務器會有一個響應的時間,然而就是這段時間內如果異步請求交給一個js函數去處理,一個有可能發生的情況就是:“人未至,聲先到”,也就是異步請求沒到達,已經結束了js函數了。這時候就會發生很多難以考慮到的問題,明明ajax傳輸正常,值卻是錯誤的。

這些都是我自己的理解,水平有限可能有說的不對的地方。

AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作 AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作 AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作 AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作 AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作 AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作 AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作 AJAX中根據async的值不同分為同步(async = false)和異步(async = true)兩種執行方式;在W3C的教程中推薦使用異步執行。
作者:閏土大叔
鏈接:http://www.imooc.com/article/44008
來源:慕課網
本文原創發布於慕課網 ,轉載請註明出處,謝謝合作

淺談ajax同步、異步的問題