2017-12-30 56 views
0

내가 4 개 첨부 기능이있는 버튼이 호출 : 내 질문은, 왜 마지막 호출되는 $http.post 않고있다 자바 스크립트/AngularJS와 기능의 순서는

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"}); 
     } 
    }; 

? confirmNumberOfBookings() 전에 기술적으로 선언됩니다.

답변

0

통화 순서는 콘솔에서보고하거나 출력하는 방법이 아닙니다.

$ http.post는 console.log ('create is called') 바로 다음에 호출됩니다.

$ http.post는 요청이 성공 또는 실패 할 때 응답 개체로 해석 될 약속을 반환하므로 약속이 해결되고 통화 순서가 표시되지 않는 경우에만 '게시가 호출됩니다'라는 메시지가 표시됩니다.

아직 확실하지 않은 경우 알려주세요.

+0

그 말이 맞습니다! 약속이 해결되기 전에'confirmNumberOfBookings()'를 호출하는 방법이 있습니까? – asus

+0

네, 저의 제안은 ng-click 기능을 사용하여 흐름에 의존하는 대신 ng-click 및 해당 기능 또는 로직의 흐름을 제어하는 ​​기능을 호출하는 것입니다. 예를 들어, ng-click = "bookingConfirmation" $ scope.bookingConfirmation =() => {// createResource 호출은 가능하면 약속을하고 약속이 해결되면 두 번째 함수 만 호출하는 식으로 진행합니다. } –

+0

함수가 동기화 또는 비동기 함수인지에 따라 다릅니다. 그들이 sync 함수라면, 호출 된 순서에 의지 할 수 있습니다. 그러나 약속을 사용하지 않을 경우 이전 함수 호출이 해결되면 다음 단계 만 수행하면 다음 함수를 호출하는 것이 좋습니다. 예를 들어이 바이올린을 확인하십시오. http://jsfiddle.net/perdeepOsingh/bu0ooz6b/2/ –