getJSON之后的未定义返回值

时间:2015-12-18 23:01:20

标签: javascript jquery json

我需要一些帮助...
getDiagrammData()函数的第一行,我称之为 getDatetimesOfPackages() getDatetimesOfPackages()使用$.getJSON() 所以我知道我必须在getJSON()的回调函数中返回我的地图。
但是当我想在我的getDiagrammData()函数中使用变量时: m.forEach()
我明白了:
 Uncaught TypeError: Cannot read property 'forEach' of undefined

所以这是我的代码:

function getDiagrammData() {
    var m = getDatetimesOfPackages();
    console.log(m);
    var data = new google.visualization.DataTable();
    data.addColumn('string', '');
    data.addColumn('number', 'Wochentag');
    data.addColumn('number', 'Uhrzeit');
    data.addColumn('string', '');
    data.addColumn('number', 'Anzahl');


    m.forEach(function (value, key) {
        data.addRow('', key.wochentag, key.uhrzeit, '', value);
    }, m);

    m.forEach(function (value, key) {
        console.log("wochentag: " + key.wochentag + " uhrzeit: " + key.uhrzeit + " anzahl: " + value);
    }, m);

    console.log("groesse: " + m.size);


    return data;
}


function getDatetimesOfPackages() {
    var url;
    var m = new Map();
    url = document.URL + 'getDatetimes/';
    $.getJSON(url, function (db_data) {
        console.log("Datetimes refreshed");

        $.each(db_data, function (i, item) {
            var date = new Date(db_data[i].empfangen);
            var day = ((date.getDay() !== 0) ? date.getDay() + 1 : 7);
            var hr = date.getHours();
            var an = new Ankunft(day, hr);
            console.log(an.wochentag, an.uhrzeit);
            if (m.has(an)) {
                var anzahl = m.get(an);
                anzahl++;
                m.set(an, anzahl);
            } else {
                m.set(an, 1);
            }
        });
        console.log("size: " + m.size);
        return m;
    });
}

最后console.log("size: " + m.size);是正确的尺寸。 然后我打电话给return m;

那么当我在函数中得到Map m时我应该怎么做" getDiagrammData()"? 提前致谢。

编辑:
也许我应该编辑,getDiagrammData()本身是从另一个调用的 功能。所以我不能在回调中调用它。 有人可以解释为什么我不能只返回地图吗? 我的意思是在那时它准备好了#34;。那么为什么这个问题呢 "未定义"

0 个答案:

没有答案