我需要一些帮助...
在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;。那么为什么这个问题呢
"未定义"