[英]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.