我有一个附加了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中的控制台输出会另外调用:
$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()
之前在技术上声明。
答案 0 :(得分:0)
通话顺序不是它在控制台中报告或输出的方式。
$ http.post在console.log之后调用(&#39; create被称为&#39;)。
$ http.post返回一个Promise,当请求成功或失败时,它将被解析为响应对象,因此您将获得输出&#39; post被称为&#39;只有当承诺得到解决并且没有表明通话顺序时。
如果你还不确定,请告诉我。