我似乎无法找出将查询语句的结果传递给全局变量的正确方法,以便我可以动态配置jsganntimproved图表。有人对我做错什么有任何想法吗?
在下面的代码中,console.log(taskItem)为空白,但是如果我将其移至setValue函数中,它将按预期工作。
当前taskitem变量被定义为const,但是我尝试了var和global。似乎都没有得到我需要的东西。
const taskitem = [];
con.query("SELECT * FROM projects", function (err, result, fields){
if(err) {
throw err;
} else {
setValue(result);
}
});
function setValue(value) {
if (value.length){
var i;
for (i=0; i<value.length; i++){
taskitem.push({
pID: value[i].Project_ID,
pName: value[i].Phase_Description,
pStart: value[i].Est_Start_Date,
pEnd: value[i].Est_Comp_Date,
pPlanStart: value[i].Est_Start_Date,
pPlanEnd: value[i].Est_Comp_Date,
PClass: "ggroupblack",
pLink: "",
pMile: "",
pRes: "",
pComp: value[i].Billed / value[i].Spent,
pGroup: "",
pParent: 0,
pOpen: 1,
pDepend: "",
pCaption: "",
pCost: "",
pNotes: "",
pBarText: ""
})
}
}
}
console.log(taskitem);
'''
答案 0 :(得分:0)
问题在于您拨打console.log()
的时间
异步代码将稍后在taskItem内设置值。
将console.log(taskItem)
移到function setValue
内部应该可以解决!