Firebase에 저장된 토큰 배열을 반환하려고하는데 'promise'를 사용하고 있습니다.'promise'는 빈 배열을 반환합니다.
function getUsersTokens() {
let dbRef = db.ref('/system/users');
let result = new Promise((resolve, reject) => {
dbRef.once('value', (snap) => {
let tokens = [];
snap.forEach(child => {
if(child.Status != "occupied"){
helper.getToken(child.key,db).then(function(token){
tokens.push(token);
});
}
});
resolve(tokens);
}, (err) => {
reject(err);
});
});
return result;
}
그리고 이것은 "helper"모듈의 'getToken'메소드입니다.
exports.getToken=function(uid,db){
return db.ref(`/Tokens/${uid}`).once('value').then(function(result){
return result.val();
});
};
문제는 때마다 나는 모든 것이 잘 작동 배열에 토큰 밀어 것입니다,하지만 종료 getUsersTokens()는 배열이 빈 얻을 때.
도움 주셔서 감사합니다.
가 작동하지 않을
줄일 수있다 나중에 토큰이 배열에 푸시되기 때문입니다. 또한 Promise.resolve ([])는 까다 롭고 약속을 해결하는 것이 즉각적인 것이 아니라는 사실에 의존합니다. –