亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

章節
問答
課簽
筆記
評論
占位
占位

設計ajax庫需要考慮的問題

Ajax 的底層實現都是瀏覽器提供的,所以任何基于 api 上面的框架或者庫,都只是說對于功能的靈活與兼容維護性做出最優的擴展。
Ajax 請求的流程:

1、通過 new XMLHttpRequest 或其它的形式(指IE)生成 ajax 的對象 xhr。  
2、通過 xhr.open(type, url, async, username, password) 的形式建立一個連接。
3、通過 etRequestHeader 設定 xhr 的請求頭部(request header)。  
4、通過 send(data) 請求服務器端的數據。
5、執行在 xhr 上注冊的 onreadystatechange 回調處理返回數據。

這幾步之中,我們開發者可能會遇到的問題

1、跨域
2、json的格式
3、dataType
4、AJAX亂碼問題
5、頁面緩存
6、狀態的跟蹤
7、不同平臺兼容

jQuery 主要就是解決上面這問題,之后就在這個基礎之上進行擴展,jQuery2.0.3 版的 Ajax 部分源碼大概有 1200 多行,主要針對 ajax 的操作進行了一些擴展,使之更加靈活,jQuery 在 1.5 中對 Ajax 模塊的重寫,增加了幾個新的概念,Ajax 模塊提供了三個新的方法用于管理、擴展 Ajax 請求,分別是:

前置過濾器 jQuery. ajaxPrefilter
請求分發器 jQuery. ajaxTransport
類型轉換器 ajaxConvert

除此之后還重寫了整個異步隊列處理,加入了 deferred,可以將任務完成的處理方式與任務本身解耦合,使用 deferreds 對象,多個回調函數可以被綁定在任務完成時執行,甚至可以在任務完成后綁定這些回調函數。這些任務可以是異步的,也可以是同步的。

比如之前提到的:

  1. 鏈式反饋 done 與 fail
  2. 分離異步與同步處理,不再被限制到只有一個成功,失敗或者完成的回調函數了。相反這些隨時被添加的回調函數被放置在一個先進先出的隊列中。
  3. 同時執行多個 Ajax 請求,這個比較復雜一點,原理其實就是 $.get 返回的是一個 deferred 對象,每個 jQuery 的 Ajax 方法返回值都包含一個 Promise 函數,用來跟蹤異步請求。Promise 函數的返回值是 deferred 對象的一個只讀視圖 Deferreds 通過檢測對象中是否存在 promise() 函數來判斷當前對象是否可觀察。$.when() 會等待所有的 Ajax 請求結束,然后調用通過 .then(), .fail()注冊的回調函數(具體調用哪些回調函數取決于任務的結束狀態)。這些回調函數會按照他們的注冊順序執行。顯而易見,deferred 對象就是 jQuery 的回調函數解決方案,它解決了如何處理耗時操作的問題,對那些操作提供了更好的控制,以及統一的編程接口。

任務

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

  • · 粉絲專屬優惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問題答復提醒
  • · 賬號支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請您關注公眾號
關注后,及時獲悉本課程動態

舉報

0/150
提交
取消
全部 精華 我要發布
全部 我要發布
最熱 最新
只看我的

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?