【发布时间】:2017-07-03 09:48:16
【问题描述】:
我无法访问 Promise 之外的快照值。我有这些功能
function getAuthorData() {
metadataRef
.child("author")
.on("value", (snap) => {
return snap.val()
})
}
function getSiteSocialLinks() {
metadataRef
.child("social")
.on('value', (snap) => {
return snap.val();
})
}
function getFeaturedPosts() {
featuredRef.on('value', (snap) => {
return snap.val();
})
}
function getBlogPosts() {
blogPostsRef
.orderByChild('createOn')
.on('value', (snap) => {
return snap.val()
});
}
function getPostCategories() {
postRef
.child('categoryStats')
.on('value', (snap) => {
return snap.val();
});
}
function getTotalPostsLength() {
postRef
.child('nopp')
.on('value', (snap) => {
return snap.val();
})
}
当我尝试这个时
var ourPosts = getBlogPosts()
var ourCategories = getPostCategories()
var totalnumOfPosts = getTotalPostsLength()
console.log(`Our post: ${ourPosts}\n our categories: ${ourCategories}\n total number of posts: ${totalnumOfPosts}\n`)
这是我得到的
我们的帖子:未定义我们的类别:未定义的帖子总数: 未定义
我真的不知道它是否与范围有关。请帮忙
【问题讨论】:
-
异步代码每次都会这样搞砸你
-
那么出路是什么?
-
使用承诺,因为它们应该被使用,也许?由于您的函数不返回任何内容,因此有点困难
-
我已经将它们的值一一记录在其中,并且它们都正确记录了它们的值
-
但会在承诺之外记录 undefined
标签: javascript firebase scope firebase-realtime-database promise