Javascript 如何在进入下一行之前等待函数调用返回值

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

我有两个函数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', 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中处理异步调用?主要是承诺和回访。