Javascript 如何在进入下一行之前等待函数调用返回值
我有两个函数is_exist()和save()函数。 在save函数中,我在执行save之前调用is_exist()函数。它返回布尔值。 但是我的问题是save()函数不是等到is_exist()函数返回值。调用is_exist()函数后,只需跳转到下一行并继续执行以下行,在save()完成后is_exist()函数返回值Javascript 如何在进入下一行之前等待函数调用返回值,javascript,angularjs,django,synchronous,sendasynchronousrequest,Javascript,Angularjs,Django,Synchronous,Sendasynchronousrequest,我有两个函数is_exist()和save()函数。 在save函数中,我在执行save之前调用is_exist()函数。它返回布尔值。 但是我的问题是save()函数不是等到is_exist()函数返回值。调用is_exist()函数后,只需跳转到下一行并继续执行以下行,在save()完成后is_exist()函数返回值 var app = angular.module('my_app', []) app.controller('my_con', ['$scope', '$http', fun
var app = angular.module('my_app', [])
app.controller('my_con', ['$scope', '$http', function($scope, $http) {
$scope.save = function(sector) {
var del_status = $scope.is_exist(sector);
console.log(del_status); // is_exsis return value
if(!del_status) {
// save
}
}
$scope.is_exist = function(sector) {
$http({
method : 'POST',
url : '/is_data_exist',
contentType : 'application/json; charset=utf-8',
data : angular.toJson({
'sector': sector
}),
dataType: 'json',
}).then(function successCallback(response) {
console.log(response.data); //http respond
if(response.data == 'False') {
return false;
}
else {
return true;
}
})
}
}])
有没有办法等到is_exsis()函数返回值,然后转到下一行使用
$scope.is_exsis(扇区)中的回调
函数
并在回调函数内执行此操作-
var del_status = $scope.is_exsis(function(data){
console.log(del_status); // is_exsis return value
if(!del_status) {
// save
}
});
您应该能够返回承诺,然后将其链接,以便在完成保存之前不会完成保存
$scope.save = function(sector) {
$scope.is_exsis(sector).then(function(del_status){
console.log(del_status); // is_exsis return value
if(!del_status) {
// save
}
});
}
$scope.is_exist = function(sector) {
return $http({
method : 'POST',
url : '/is_data_exist',
contentType : 'application/json; charset=utf-8',
data : angular.toJson({
'sector': sector
}),
dataType: 'json',
}).then(function successCallback(response) {
console.log(response.data); //http respond
if(response.data == 'False') {
return false;
}
else {
return true;
}
})
}
它是异步的,它意味着你“不能”,因为你不知道承诺什么时候会得到解决。您可以做的是将以下代码作为函数传递给您的承诺,以便承诺执行它。类似于
var del_status=$scope.is_exist(扇区,函数(){console.log(del_status);/*etc*/})代码>(小心,您有一个输入错误,exist!=exsis)重复:@Nevosis您的链接是关于ajax的,我的问题是关于angularjsMy链接,您的问题是关于javascript中的异步调用。在angular、react、ajax、jquery、nodejs等方面也是一样的。。。如何在js中处理异步调用?主要是承诺和回访。