1. 程式人生 > 實用技巧 >Ajax同步和非同步上問題的處理

Ajax同步和非同步上問題的處理

Ajax在處理上的問題

2020年10月9號,今天在Ajax同步和非同步問題上花費了大量的事件和精力,也收穫到了一點點經驗。

同步

在這裡插入圖片描述
把async改成false時候ajax請求變成同步,導致我的頁面出現假死,如果在beforeSend中
加Alert,是有在執行的,但是無法彈出我的遮蔽層。

原因如下

JQ 在1.5版本之前 設定成同步的時候,頁面會出現假死現象,導致beforeSeed呼叫渲染頁面失敗

假死原因: 瀏覽器的渲染(UI)執行緒和js執行緒是互斥的,在執行js耗時操作時,頁面渲染會被阻塞掉。
當我們執行非同步ajax的時候沒有問題,但當設定為同步請求時,其他的動作(ajax函式後面的程式碼,還有渲染執行緒)都會停止下來。

即使我的DOM操作語句是在發起請求的前一句,這個同步請求也會“迅速”將UI執行緒阻塞,不給它執行的時間。這就是程式碼失效的原因;

解決方法

一開始我查閱了一下網上的資料
在這裡插入圖片描述地址:https://blog.csdn.net/qq_40259641/article/details/82774777

但是我感覺如果換JQ版本,換了也不知道能否成功,我還是先從簡單一點的把方法改成非同步就好了。改完之後好了,之前的js事件沒了反應。怎麼狂按Enter沒有反應?弄得我抓狂了,好了,又要去百度了

JS失效的原因

網上查詢原因是
如果直接這樣子寫 ,直接繫結在dom元素上,說頁面重新整理替換了dom元素之後,就不認識了
真TM神奇,總感覺洗了澡之後就不是我了!那沒辦法只好換一種繫結方式。

在這裡插入圖片描述

解決辦法

在這裡插入圖片描述
網上說:是事件代理或者叫事件委託,事件繫結的元素並不是觸發的元素,而是其父(祖宗)元素,這時候只要父元素沒被替換掉,子元素不管怎麼替換,只要符合開始繫結的選擇器,就可以觸發。

感言

這是我的第一篇blog,其實一路工作學習,過來。肯定會遇到不少的問題,但一直也沒有寫blog只是通過電腦文字記錄一下,或則是收藏一下別人寫的好並且也解決了自己問題的blog。為什麼選擇在做前端技術的時候寫,其實我是一名後端程式設計師,在一家小公司,前端的妹子走了,問題分發到我身上一開始挺覺得苦惱的,明明後端已經有很多東西要學習了,還要分精力學習前端的內容。但是沒辦法任務到手,不能不做,通過幾天上班時候接觸,夜間自己開小灶。越發覺得謝謝html,css,js挺有意思的,起碼讓我覺得寫錯了除錯起來快很多。當然還有一個重點感悟 通過程式設計,你會表現解決方法的方式有很多,一種不行用第二種,第二種不行用第三種。當思考的多了,查詢得多了。任務完成過後你會發現其實123種方法都可以,只是能力尚不夠。

感覺這樣很有趣。

沖沖衝!!!