首页 > 解决方案 > 如何访问在 .then() 方法中定义的变量,在方法之外 - JavaScript?

问题描述

在下面的代码/示例中,如何访问在 db.collection()...then() 方法中定义的 likecount 变量?我觉得我已经尝试了互联网上的所有解决方案,但结果总是不确定。

代码:

var parsed = path.split("/");

var likecount; 

db.collection(parsed[0]).doc(parsed[1]).collection(parsed[2]).doc(parsed[3]).collection("likes").get().then(function(querySnapshot) {

  likecount = querySnapshot.size

  console.log(likecount)
})

整个代码(包括我尝试访问的地方likecount):

firebase.auth().onAuthStateChanged(function(user) {

    var query = db.collectionGroup("userPosts")

    query.get().then(querySnapshot => {
        setupPosts(querySnapshot.docs)
    })

    const posts = document.querySelector('.posts');

    const setupPosts = (data) => {
        let html = '';
        data.forEach(doc => {
            const post = doc.data();
            const picURL = post.picURL;
            var path = doc.ref.path;

            var parsed = path.split("/");

                var likecount; 

                db.collection(parsed[0]).doc(parsed[1]).collection(parsed[2]).doc(parsed[3]).collection("likes").get().then(function(querySnapshot) {

                    likecount = querySnapshot.size

                    console.log(likecount)
                })

            let li = `<li class="post">
                <h3 class="content">${post.content}</h3>
                <button class="comment" onclick="comment('${path}')">Comment</button>
                <button class="like" onclick="like('${path}')">Like</button>
                <span class="like-count">${likecount}</span>`;
            
            li += (post.picURL ? `<img class="img" src="${picURL}" onclick="openImage('${picURL}')">` : ``);
            li += `</li><br></br>`;
            html += li
        })
        
        posts.innerHTML = html;
    }

标签: javascriptvariables

解决方案


推荐阅读