登錄功能表單提交:
異步:就是不使用form 表單提交數據,提交表單數據不會造成整個頁面的刷新,監聽表單數據傳輸獲取的狀態就可以不用刷新整個頁面
異步的mvc表現:用戶單擊提交,瀏覽器被js操控獲取表單里面的數據,js功能(ajax)將數據發送給服務器,服務器接收到的是發送過來的數據,控制器得到數據包,分離出數據發給模板,模板處理數據后直接將數據發送給瀏覽器,瀏覽器通過js操作數據,更新頁面數據,從而達到不更新整個頁面,js就驗證了表單數據。
同步:就是form表單提交數據,提交表單數據的時候會刷新整個頁面
同步的mvc表現:用戶單擊提交的時候,瀏覽器將整個頁面發送給服務器,服務器的控制器將頁面數據取出,把數據交給模板,模板處理好數據返回給控制器,控制器將數據嵌套到網頁中,把更新了數據的網頁發送回瀏覽器,提交表單后,整個網頁表現為刷新,由于網頁整個提交到服務器,所以用戶不能操作網頁中的任何位置
怎樣理解阻塞非阻塞與同步異步的區別?
“阻塞”與"非阻塞"與"同步"與“異步"不能簡單的從字面理解,提供一個從分布式系統角度的回答。
1.同步與異步
同步和異步關注的是消息通信機制 (synchronous communication/ asynchronous communication)
所謂同步,就是在發出一個調用時,在沒有得到結果之前,該調用就不返回。但是一旦調用返回,就得到返回值了。
換句話說,就是由調用者主動等待這個調用的結果。
而異步則是相反,調用在發出之后,這個調用就直接返回了,所以沒有返回結果。換句話說,當一個異步過程調用發出后,調用者不會立刻得到結果。而是在調用發出后,被調用者通過狀態、通知來通知調用者,或通過回調函數處理這個調用。
典型的異步編程模型比如Node.js
舉個通俗的例子:
你打電話問書店老板有沒有《分布式系統》這本書,如果是同步通信機制,書店老板會說,你稍等,”我查一下",然后開始查啊查,等查好了(可能是5秒,也可能是一天)告訴你結果(返回結果)。
而異步通信機制,書店老板直接告訴你我查一下啊,查好了打電話給你,然后直接掛電話了(不返回結果)。然后查好了,他會主動打電話給你。在這里老板通過“回電”這種方式來回調。
2. 阻塞與非阻塞
阻塞和非阻塞關注的是程序在等待調用結果(消息,返回值)時的狀態.
阻塞調用是指調用結果返回之前,當前線程會被掛起。調用線程只有在得到結果之后才會返回。
非阻塞調用指在不能立刻得到結果之前,該調用不會阻塞當前線程。
還是上面的例子,
你打電話問書店老板有沒有《分布式系統》這本書,你如果是阻塞式調用,你會一直把自己“掛起”,直到得到這本書有沒有的結果,如果是非阻塞式調用,你不管老板有沒有告訴你,你自己先一邊去玩了, 當然你也要偶爾過幾分鐘check一下老板有沒有返回結果。
在這里阻塞與非阻塞與是否同步異步無關。跟老板通過什么方式回答你結果無關。
知乎