저는 firebase의 데이터를 가져 와서 html로 표시하는 함수를 실행하는 버튼이 있습니다 (저는 angularJS, ionic 및 firebase를 사용하고 있습니다).은 함수로만 제대로 작동합니다.
문제는 다음과 같습니다. 그 후에 .then (function() {})을 삽입하지 않으면 약속은 비동기 방식으로 실행됩니다. 즉, 데이터를 표시하려면 버튼을 다시 한 번 클릭해야합니다. html.
약속 이후에 데이터를 가져오고 싶습니다. (firebase에서 데이터를 가져옵니다.)하지만 그 뒤에 .then 함수를 넣을 때만 작동합니다.
그러나 데이터는 콘솔에는 정상적으로 표시되지만 html에는 표시되지 않습니다. 즉, 함수가 범위에 연결되지 않는다고 생각합니다.
$scope.displayChat = function() {
var userId = firebase.auth().currentUser.uid; // Get ID
var deferred = $q.defer()
var db = firebase.database();
var ref = db.ref("12346787");
ref.on("value", function(snapshot) {
console.log(snapshot.val());
$scope.chatArray = snapshot.val();
deferred.resolve()
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
})
return deferred.promise.then(function(){
// Removing this empty .then(function(){}) function
// will result in asynchronousity.
// just "return deferred.promise;" doesn't work.
})
}
모든 솔루션 : 여기
코드의 조각? 나는 약속에 대한 많은 경험이 없지만 관련있는 것을 찾지 못했습니다. 건배.
왜 약속이 필요합니까? 메모를 해결하는 중입니다. ** deferred.resolve() ** -> 값을 확인하지 못합니다. – Hosar