비동기 함수의 반환 값에 대한 조사를 설정하려고하지만 무한 다이제스트 루프를 계속 실행하려고합니다. 여기에 훨씬 더 자주 처음보다 호출되는 내 $ 시계
$scope.$watch(function(){
var friendsCount = PublicUserData().then(function(data){
console.log(data.length);
return data.length;
});
return friendsCount;
}, function(newValue, oldValue) {
console.log("change"+ newValue);
});
내가 모두 console.log
가 호출되는 크롬 콘솔에서 볼 수 있지만 (콜백)에 두 번째입니다.
.factory('PublicUserData', function($http, $q){
return function(){
var defer = $q.defer();
$http.get('/api/v1/users/').then(function(data){
defer.resolve(data.data.users);
})
return defer.promise;
}
})
내 $watch
의 외부 $ 범위로 시계 식을 설정처럼, 몇 가지를 시도했다, 그러나 그것은 오히려 공장의보다, 공장의 코드를 반환 끝 :
PublicUserData
는 $q
사용 반환 값.
$watch
을 사용하여 약속을 구현할 수 있습니까? 아니면 다른 것을 사용해야합니까?
아 당신은 당신이 공장에서이 작업을 수행하고 단순한 범위 변수를 사용할 수 있습니다 (시간 제한 또는 간격을 사용하는지 여부) 폴링합니다. 왜 다이제스트 루프를 일으키는 지 알 수 없었습니다. 이 접근법에 대한 또 다른 방법, 환호에 대한 아이디어를 나에게 주었다. – user2936314
@ user2936314 웹 소켓을 제공하거나 응용 프로그램에 장기간 통신 할 수있는 솔루션을 확인하십시오. 폴링 대신 서버에서 정보를 푸시 할 수 있습니다.예를 들어 우리는 Java 기반 앱에서'Atmosphere'를 사용하고 있습니다. – akn