2017-04-27 3 views
-1

자바 스크립트를 처음 사용했습니다. & AngularJS. 그래서성공한 함수를 호출 할 때 약속을 사용해야하는 이유

$http.get('URL').success(function(data){ 
    $.fullCalender({ 
     calendarData: data 
    }); 
}); 

, 내 의심의 여지가 있습니다 :

위의 코드에서
$http.get('URL').success(function(data){ 

$scope.data = data; 

}); 

$.fullCalender({ 
calendarData: $scope.data 
}); 

, 나는 '의 CalendarData'가

하지만 아래와 같은 문제 이상으로 해결할 수 있습니다 빈 얻을 : 나는 아래와 같은 시나리오를 가지고 : 우리가 위와 같이 문제를 해결할 수있을 때 사람들이 왜 약속을 지키는가? 미안, 바보 같은 쿼리.

+0

약속은 콜백이 도구 인 것처럼 도구입니다 - 작업에 적합한 도구를 사용하십시오 - 다른 것보다 더 낫다는 개념이 없습니다 (하나는 못에 망치를 사용하고 나사는 스크류 드라이버) - 약속 콜백을 사용하여 여러 비동기 작업을 "연결"할 때 지옥 시나리오의 콜백 피라미드와 반대되는 쉬운 연결 방식의 장점이 있습니다. –

+0

http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after- i-modify-it-inside-of-a-function-asynchron – epascarello

+0

@ JaromandaX 고마워요 :) 죄송합니다만큼 upvote 수없는만큼 충분한 포인트. – John

답변

0

약속은 유명한 콜백 지옥 문제를 해결합니다. 콜백 지옥은 실제로 2 가지 문제를 말합니다. 첫 번째는 콜백을 사용하면 콜백을 중첩해야 할 때가 있기 때문에 코드를 읽는 것이 매우 어렵다는 생각입니다. 반면에 약속은 훨씬 깨끗한 코드를 만드는 체인 수 있습니다.

또 다른 문제점은 제어 반전이라고하는 것입니다. 이것은 큰 문제입니다. 어떤 경우에는 콜백이 제 3 자에 의해 호출된다는 생각은 무서운 생각 일 수 있습니다. 어떤 이유로 든 상대방에 버그가있는 경우이 버그가 코드로 유출됩니다.

귀하의 콜백이 두 번 이상 호출 된 경우를 예로들 수 있습니다. 이것은 치명적인 결함 일 수 있습니다. 무슨 일이 있어도 약속은 콜백 함수를 한 번만 실행합니다. 바꾸어 말하면, 컨트롤의 반전을 되 돌리는 것이 약속과 함께 큰 승리입니다.