저는 몇 년 동안 jQuery에서 변환 한 후에 AngularJS를 배우고 있습니다. 그리고 약간의 비트는 훨씬 더 직관적입니다. 일부는별로 :).
나는 약속의 사용, 특히 $ http와 함께 사용하는 $ q에 관한 내 머리를 잡으려고 노력하고 있는데, 나는이 두 가지를 결합하여 너무 많은 정보를 찾을 수 없다.
성공/오류 콜백 대신 약속을 사용하는 이유는 무엇입니까? 둘 다 실제로 콜백을 사용하므로 약속이 더 좋은 것으로 간주되는 이유는 무엇입니까? 예 : (?) 그것이 나에게 무슨 일이 일어나고 있는지를 완벽하게 제어 할 수 있기 때문에 좋은
function get(url, success, error) {
success = success || function() {};
error = error || function() {};
$http.get(url)
.success(function (data) {
success(data);
})
.error(function (error) {
error(error);
});
}
get('http://myservice.com/JSON/',
function() {
// do something with data
},
function() {
// display an error
}
);
을 다음과 같이 나는 get(...)
기능을 설정할 수 있습니다. get(...)
을 호출하면 get
이 호출 될 때마다 성공/오류를 제어 할 수 있습니다. 나는이 약속을 사용하여 변환하면
, 그럼 내가 얻을 :
응축function get(url) {
return $http.get(url)
.then(function (data) {
return data;
},
function (error) {
return error;
});
}
get('http://myservice.com/JSON/')
.then(function (data) {
// do something with data
});
// cannot handle my errors?
, 동의; 우리는 명시 적으로 성공/오류 콜백에 대해 걱정할 필요가 없지만 오류를 처리하기 위해 두 번째 콜백을 구성 할 수 없기 때문에 내 오류 콜백을 처음부터 제어하지 못했던 것 같습니다.
즉, 여러 컨트롤러에서 사용할 수있는 서비스에서이 함수를 사용하면 사용자에게 오류를 알리는 UI를 업데이트 할 수 없습니다.
내가 누락 된 항목이 있습니까? 약속이 선호되는 이유가 있습니까? 나는 그 이유를 찾을 수 없다.
먼저 'then'에 대한 전체 표기법은'then (successCallback, errorcallback)'입니다. 따라서 여전히 오류를 처리 할 수 있습니다. 그리고'.success'와'fail'과 같은 별도의 메소드를 사용할 수 있습니다. – dfsq
당신은 약속을 묶을 수 있는데, 가장 큰 장점은 – harishr
입니다. @dfsq 오케이 -'http : // myservice.com/JSON /'을 호출 할 때'then'을 사용할 때 오류 콜백이 발생하지 않았습니다. 나는 다시 시도해야 할 것이다. .then (successCallback, errorCallback)는 .success (successCallback) .fail (errorCallback)과 동일합니까? – keldar