gpt4 book ai didi

javascript - $http.post() angularjs 响应函数未按正确顺序执行

转载 作者:行者123 更新时间:2023-11-28 18:37:23 24 4
gpt4 key购买 nike

从我的 Angular Controller 中,我正在调用函数来执行 $http.post() 请求。

$scope.formSuccess = false;

$scope.submit = function(serviceName) {
submitRequest(serviceName);
if($scope.formSuccess) {
// do something
}
};

var submitRequest = function(serviceName) {
$http.post(serviceName, data, { headers: { 'Content-type': 'application/json' }
}).then(successFunction, errorFunction);
};

var successFunction = function(response) {
$scope.formSuccess =true;
};

submitRequest() 下面的代码先于 successFunction() 执行,因此 if block 内的代码永远不会执行。我怎样才能做到这一点。我不想将 if block 移至 successFunction。

最佳答案

问题是这行 if($scope.formSuccess) { 是在 http 请求完成之前执行的,因此 if 中的语句> 永远不会被执行。

最干净的解决方案是引入在 $http.post 成功和失败时执行的函数

$scope.formSuccess = false;

$scope.submit = function(serviceName) {
submitRequest(serviceName)
.then(onPostSuccess)
.catch(onPostFail);
};

var submitRequest = function(serviceName) {
return $http.post(serviceName, data, { headers: { 'Content-type': 'application/json' }
});
};

var onPostSuccess = function(response) {
$scope.formSuccess = true;
//do your stuff here

};

var onPostFail = function(response){
$scope.formSuccess = false;
//show form failed
}

关于javascript - $http.post() angularjs 响应函数未按正确顺序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36846250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com