먼저 Q를 설치하거나 다운로드 'q'
3을 추가하는 등 앱 모듈에 스크립트
1) npm install q --save
2) 추가이 추가)에 질문을 추가해야합니다 당신의 공장 및 사용 허가자
app.factory('Authentication', ['$rootScope','q', function($rootScope, q) {
return {
getUsers: function() {
var defer = q.defer();
firebase.database().ref('/userInfo').on('value', function (snapshot) { //assuming you get snapshot value from the db
defer.resolve(snapshot.val());
//return snapshot.val();
});
return defer.promise;
}
}
}
4) 당신은 또한 ERR를 반환하고 당신이 당신이 여기에 코드의 다른 기능에
예를 들어
app.factory('Authentication', ['$rootScope','q', function($rootScope, q) {
return {
getUsers: function() {
var defer = q.defer();
firebase.database().ref('/userInfo').on('value', function (snapshot) {
if(!snapshot.val()){
defer.reject('err no data');
}else{
defer.resolve(snapshot.val());
//return snapshot.val();
}
});
return defer.promise;
}
}
}
그것을 잡아하고 연기의 .reject을 추가 할 수 있습니다
app.controller('myController', function($scope, $rootScope, Authentication) {
Authentication.getUsers().then(function(snap){
$scope.userData = snap;
});
}
함수에 다음 추가
app.controller('myController', function($scope, $rootScope, Authentication) {
Authentication.getUsers().then(function(snap){
$scope.userData = snap;
}, function(err){
//do something with the error
});
}
는
도움 희망
참고
js는 비동기입니다. 그래서 우리가 응답을 기다릴 필요가있을 때, 시간이 걸릴 것입니다. js는 그의 일을 계속합니다. 그래서 우리는 그가 다음 단계로 가기 전에 그 응답을 확실히 할 수있는 약속이 필요합니다. (그가 우리가 가기를 원합니다)
Javascript와 AngularJS 세계에서 약속하는 것은 우리가 미래의 어떤 시점에서의 행동; 는
promise
그것이 당신 때문에 화면에 아무것도 표시되지 않는
q를 사용하여 시도하십시오. npm – Erez