javascript / angularjs - 函数调用的顺序

时间:2017-12-30 05:50:32

标签: javascript angularjs post angularjs-ng-click

我有一个附加了4个功能的按钮:

        <button type="button" data-dismiss="modal" data-toggle= "modal" href="#booking" class="btn btn-success" ng-click="createResource(); cancelFirstModal(); confirmNumberOfBooking(); showSecondModal(); " >Create Bookings</button>

ng-click之后,首先调用createResource(),然后调用confirmNumberOfBookings(),但我在Safari中的控制台输出会另外调用:

console log

    $scope.createResource = function () {
        console.log('create is called');
        $http.post('/api/v1/resource', $scope.newResource).then(function (response) {
            console.log('post is called');
        });
    };

    $scope.confirmNumberOfBooking = function (){
        //$scope.numberOfBookings = 3;
        console.log('confirm is called');
        $scope.newResource.booking = [
            {
                startDateTime: "datetime",
                endDateTime: "datetime"
            }
        ];

        for(var i = 0; i < $scope.newResource.numberOfBookings; i++){
            $scope.newResource.booking.push({startDateTime: "datetime",endDateTime: "datetime"});
        }
    };

我的问题是,$http.post为什么最后被调用?它在confirmNumberOfBookings()之前在技术上声明。

1 个答案:

答案 0 :(得分:0)

通话顺序不是它在控制台中报告或输出的方式。

$ http.post在console.log之后调用(&#39; create被称为&#39;)。

$ http.post返回一个Promise,当请求成功或失败时,它将被解析为响应对象,因此您将获得输出&#39; post被称为&#39;只有当承诺得到解决并且没有表明通话顺序时。

如果你还不确定,请告诉我。