簡體   English   中英

如何處理Angular JS中的多個異步發布方法?

[英]How to handle multiple asynchronous post method in angular js?

$scope.savekbentry = function (value) {
        console.log('save clicked');
        console.log(value);
        console.log($scope.kbentry.kbname);

        $scope.kbentry.mode = value;
        var kbname = $scope.kbentry.kbname;
        var kbdescription = $scope.kbentry.kbname;
        var kbmode = "";
        var type = "";
        if ($scope.kbentry.mode == 'symptom') { kbmode = 1; type = 'SYM' }
        if ($scope.kbentry.mode == 'allergy') { kbmode = 3; type = 'ALG' }

        $http.post('../AjaxRequestData.aspx/AddKBEntry', { KB_Name: kbname, KB_Des: kbdescription, KB_Mode: kbmode })
        .success(function (data, status, headers, config) {

            $scope.transport = {
                method: 'post',
                read: '../WM_Autocomplete/GetAutocompleteData.aspx/GetSingletonLst',
                params: { type: type }
            }
        })
        .error(function (data, status, headers, config) {

        });

        clear();
    }

在上面的代碼中,我想在第一次發布成功之后調用另一個異步發布方法。 目前,它無法按照上述代碼運行。 如何通過回調函數處理此問題?

您可以使用then()來鏈接和解析$http請求承諾,例如:

var getSingletonPromise = function(type){
  return $http.post('.../GetSingletonLst', type) // returns a promise 
};

var addEntryPromise = function(params){
  return $http.post('.../AddKBEntry', params)  // returns a promise
};

$scope.savekbentry = function (value) {

  addEntryPromise().then(function(){ // use then() to resolve your promise
    // addEntry onSuccess
  }).getSingletonPromise().then(function(){
      // addEntry onSuccess
    }); 
}

您可能還考慮將$ http請求分離到單獨的工廠/服務中並添加錯誤處理。
請注意,以上代碼尚未經過測試,但提供了可能解決方案的概述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM