先說結論再說原因
結論:比如點擊事件觸發了兩個ajax請求或者更多的請求,是沒有執行順序的,各個請求的快慢完全取決於返回的快慢,或許你在瀏覽器調試窗口看見的是先發了一個請求,再發了一個,但是完全沒有等待其返回就已經執行下一步操作。
原因:
首先在這里要明白單線程、多線程和線程:
線程是程序中的一個執行流,每個線程都有自己的專有寄存器(棧指針、程序計數器等),但代碼區是共享的,
即不同的線程可以執行同樣的函數。
多線程與單線程的區別:
你早上上班,正要打卡的時候,手機響了。。你如果先接了電話,等接完了,在打卡,就是單線程。
如果你一手接電話,一手打卡。就是多線程。兩件事的結果是一樣的。。你接了電話且打了卡。
js是單線程操作,那么問題就來了,既然是單線程為啥ajax請求無順序,因為是並行的。
在這里需要了解並發和並行:
1、並行就是兩個任務同時運行,就是甲任務進行的同時,乙任務也在進行。
2、並發是指兩個任務都請求運行,而處理器只能按受一個任務,就把這兩個任務安排輪流進行,由於時間間隔較短,使人感覺兩個任務都在運行。
這兩個概念說深說淺都不合適,多看多理解,入幾次坑就很有體會了。