第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

章節(jié)
問答
課簽
筆記
評論
占位
占位

接口的設計優(yōu)劣

從設計的層面上來考下,這種事件組合的方式是如何實現(xiàn)?有什么優(yōu)勢?

  1. Ajax 的參數(shù)回調(diào)
  2. 基于 deferred 方式的 done 回調(diào)
  3. 全局的自定義事件的回調(diào)

設計一:

tAjax({
    url: "php.html",
    complete: function(data) {
        console.log(data)
    }
})

如果要實現(xiàn)這種接口調(diào)用那么我們就需要封裝下代碼,把回調(diào)通過實參傳遞。

var tAjax = function(config) {
 //參考右圖設計一
}

這樣設計可以看做類似工廠模式的封裝,好處不用多說在工廠模式里面包含了對象的創(chuàng)建等必要的邏輯,客戶端根據(jù)傳參選擇動態(tài)的實例化相對的處理,對于客戶端來去除了具體的依賴,當然 tAjax 你也可以看作一個外觀模式提供的接口,其實就是隱藏了具體的復雜邏輯,提供一個簡單的接口,從而降低耦合。


設計二:

tAjax({
    url: "php.html",
    complete: function(data) {
        console.log(data)
    }
}).done(function(data){
    console.log(data)
})

在之前加入了一個 done 鏈式處理,當然這里 done,其實是 deferred 的一個成功處理通知,如果之前沒有接觸,大家去了解一下關于 deferred 的概念,我們知道 jQuery 實現(xiàn)了鏈式,實現(xiàn)的原理無法就是返回本身對象的引用。

var ajax = tAjax({
    url: "php.html",
    complete: function(data) {
        console.log(data)
    }
})
ajax.done(function(){
    //.........
})

以上是分離的情況下,如果要合并成一條鏈式處理,只要在上一個方法中返回 this 即可。

var tAjax = function(config) {
   ///參考右圖設計二
    return {
        done: function(ourfn) {
             doneFn = ourfn;
        }
    }
}

我們返回了一個 done 對象,這里一樣要是對象,因為鏈式的原因我們看外部指定了內(nèi)部的 done,從而把外部函數(shù)給引用到內(nèi)部的 doneFn 上緩存起來 xhr.staturs 成功后一起執(zhí)行,當然這種設計是有問題的,如果在 done 之后我再鏈式就肯定不行,因為對象的引用錯了,那么 jQuery 是如何處理?

 

設計三:提供 document 對象的全局處理

$(document).ajaxComplete(function() {
    console.log('ajax請求成功')
})
tAjax({
    url: "php.html",
    complete: function(data) {
         console.log(data)
    }
}).done(function(data){
    console.log(data)
})
  • 這里的問題就是把 ajax 內(nèi)部的事件,返回給全局捕獲了,有點類似 css3 的全局動畫事件
  • 這里的設計其實最簡單了因為本身之間沒有什么耦合,就是發(fā)送一個事件給 document 即可
  • jQuery 利用了 trigger 自定義事件觸發(fā)的globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
  • 具體每一種實現(xiàn)在后面的都會提到,在這里需要大家有個整體的印象

任務

?不會了怎么辦
||

提問題

寫筆記

公開筆記
提交
||

請驗證,完成請求

由于請求次數(shù)過多,請先驗證,完成再次請求

加群二維碼

打開微信掃碼自動綁定

您還未綁定服務號

綁定后可得到

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

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

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

邀請您關注公眾號
關注后,及時獲悉本課程動態(tài)

舉報

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

手記推薦

更多

本次提問將花費2個積分

你的積分不足,無法發(fā)表

為什么扣積分?

本次提問將花費2個積分

繼續(xù)發(fā)表請點擊 "確定"

為什么扣積分?