2

我有两个函数is_exist()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()函数返回值然后转到下一行

4

2 回答 2

1

在回调函数中使用callback函数$scope.is_exsis(sector);并执行此操作 -

 var del_status = $scope.is_exsis(function(data){
    console.log(del_status); // is_exsis return value

    if(!del_status) {
        // save
    }
 });
于 2017-06-12T11:45:39.100 回答
0

您应该能够返回 Promise,然后将其链接起来,以便在完成 is_exists 之前不会完成保存。

$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;
        }
    })
}
于 2017-06-12T11:47:07.043 回答