亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在AngularJS對$http.post()函數進行封裝

發布時間:2021-02-25 17:23:04 來源:億速云 閱讀:111 作者:Leah 欄目:web開發

今天就跟大家聊聊有關怎么在AngularJS對$http.post()函數進行封裝,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

service('myHttpService', ['$http', function ($http) {
  var myHttpPost = function (url, data, successFn, errorFn) {
  }
  return {
    myHttp: function (url, data, successFn, errorFn) {
      return myHttpPost(url, data, successFn, errorFn);
  }
  }
}]);

如上,我會return內部定義的方法,這個方法允許使用者定義successFn和errorFn,即相應成功和失敗的回調,如此一來使用者大可放心的預先編寫數據的處理邏輯,而無需關心其他細節。

另外,我允許使用者拿到更加靈活的post(),那么我是這樣實現的:

var httpPromise = $http.post(url, data, {timeout: 30000});
if (!angular.isDefined(successFn)) {
  return httpPromise;
}

如果使用者并沒有定義成功回調,好吧,這層封裝就當是不存在,我會把post()丟出去,由調用者自行處理。而如果調用者想預先定義的話,我應當在封裝中處理好他們的邏輯:

return httpPromise.then(
    function (response) {
     if (response.status) {
      return successFn(response);
     } else {
      /*其他處理*/
     }
    },
    function (error) {
     if (!angular.isDefined(errorFn)) {
      /*其他處理*/
     } else {
      return errorFn(error);
     }
    },
   function () {
    /*無論何總情況下都應該被執行的邏輯*/
   }
)

如此對于http.post()的封裝基本上就算是完成了。其中有一個地方需要注意,如果我在處理successFn的時候,用了angular.isDefined()判斷調用者是否定義了回調,如果沒有,我將把處理權利交給調用者,如果已定義我將代為處理。其中then()方法比較有趣,因為http方法返回的是一個promise對象,在響應返回的時候可以通過then()來處理響應,其實完全可以通過promise.success()和promise.error()來處理不同響應狀態的回調,但是用then()更好一些,因為它接收到的是完整的響應對象,而success()和error()會對響應對象進行解析,具體的差別讀者可以通過console輸出來看看。

看完上述內容,你們對怎么在AngularJS對$http.post()函數進行封裝有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉鱼县| 云霄县| 宁德市| 镇平县| 海安县| 同仁县| 沭阳县| 牟定县| 宁海县| 株洲县| 搜索| 济宁市| 哈尔滨市| 宁强县| 广宗县| 灌南县| 宣城市| 富阳市| 林西县| 临颍县| 都匀市| 阆中市| 从化市| 贡嘎县| 石柱| 深泽县| 阿拉尔市| 新宾| 纳雍县| 武鸣县| 鲁山县| 安图县| 吉木乃县| 北碚区| 五华县| 达拉特旗| 班玛县| 平和县| 马公市| 永春县| 扎兰屯市|