Promise對Ajax的封裝

2021-08-21 12:30:51 字數 1006 閱讀 7212

jquery的ajax

在開發中,我們常常會用到ajax,根據請求的位址,伺服器返回相應的success或者error,而且ajax也是可以非同步的,async為true的時候為非同步,反之同步,下面以非同步為例,因為我們的promise就是非同步操作。

$.ajax(,

error: function(data)

});

上面的ajax請求的意思就是,當我非同步請求乙個url位址時,如果成功則會執行callback,否則列印出錯誤資訊,所以ajax請求 ,不論結果是什麼,都只有一種結果,success或者error。這和我們的promise不謀而合,那我們也可以用promis去封裝我們的ajax。

promise封裝ajax

我們知道promise會接收兩個引數,resolve(成功)和reject(失敗),我們可以用這兩個引數代替ajax的success和error,並使用鏈式呼叫,then裡面執行成功的操作,catch裡面執行錯誤的資訊。這裡會涉及到http方面的知識,相關引數可以參考這個鏈結

const $ajax = function(url)  else }}

//傳送 http 請求,預設非同步請求

request.send();

})} .then((resolve) => )

.catch((reject) => )

上面的js,剛開始我直接在vscode裡面執行,發現直接報錯 "xmlhttprequest is not defined",但是我在html引入改該s,就沒有報錯了,一直不懂為啥@**@

總結:其實我們開發中並不會用到這麼麻煩的封裝,直接用jquery封裝好的ajax的就可以,如果是vue的話,你可以去                   看看 vue-resource和axios,發現和promise何其相似,所以我們開發的過程中,去了解開發的思想是非常的重要。

手寫promise封裝ajax

其實,axios本身就是基於promise進行封裝的,我們之所以進行二次封裝,主要是為了能夠對錯誤資訊進行乙個集中的處理,根據不同的錯誤資訊,需要給使用者不同的提示,以便於給使用者乙個良好的操作體驗。封裝方法有很多種,基於class類的,基於建構函式的,也可以直接封裝乙個函式。具體按照個人習慣,最主...

Promise物件實現Ajax封裝

故心故心故心故心小故衝啊 預設methods get 預設url http localhost 3306 預設data null const axios else xhr.onreadystatechange else 最後返回乙個promise return promise node中做了倆個測試...

封裝Promise版本的ajax方法

正如之前封裝的ajax方法 呼叫時可以使用callback形式進行介面偽巢狀,但容易形成callback hell 地獄。在promise應用場景裡,我們使用jquery的 get的promise語法格式 jquery內建支援promise 實現了then鏈式呼叫,接下來將promise語法封裝到之...