JavaScript - console.log显示列表,访问时给出undefined

时间:2017-06-04 11:00:17

标签: javascript firebase google-chrome-extension firebase-realtime-database undefined

上下文

在我当前的应用程序中,Chrome扩展程序会记录所有网站访问并添加到Firebase中,使用该功能可以获取当天访问过的网站对象列表。

问题

现在从那些我计划将唯一名称提取到列表中的对象,这会带来一些问题,因为保存这些对象的列表似乎并不存在。当我将它登出时,它显示为> []!'下面的值刚刚评估',然后显示这些项的值。

但是当我尝试使用索引访问它们时,它会显示 undefined 。即使在运行调试器时,由于某种原因它似乎也会给出一个空列表,但正如前面提到的那样,列表的正常console.log会给出所需的结果。

示例代码

function Master() {
    firebase.initializeApp(config);
    let that = this;

    this.http_usage = this.get_http();
    this.https_usage = this.get_https();
    this.todays_usage = this.get_today_sites();

    this.site_names = [];
    console.log(this.todays_usage); 

    chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
        console.log(request.message);
        if (request.message === "hello") {
            sendResponse({farewell: [that.http_usage.length, that.https_usage.length]});
        }
    });

    this.init();
}

get_today_sites: function () {
    let content = [];

    let start = new Date();
    start.setHours(0, 0, 0, 0);
    start = start.getTime();

    let end = new Date();
    end.setHours(23, 59, 59, 999);
    end = end.getTime();

    let ref = firebase.database().ref('websites/');
    ref.orderByChild("time").startAt(start).endAt(end).once('value', function (data) {
        data.forEach(function (snapshot) {
            content.push(snapshot.val());
        })
    });
    return content;
},

的console.log(this.todays_usage)

>[]
0:Object
    protocol:"https:"
    time: 1496523823397
    time_spent: 17
    url:"www.google.ee"
    __proto__:
1:Object
    ....
157:Object
    ....

的console.log(this.todays_usage [0])

未定义

0 个答案:

没有答案