angular - 如何为chartjs返回正确的Promise
问题描述
我有一个调用 firebase 的服务,它返回一个承诺。如果 firebase 返回数据,它们将绑定到 chartjs 图表。但不知何故,我得到了一个 Promise 错误。
到目前为止,我尝试改变解决承诺的位置,但我总是遇到同样的错误。当我将返回的数组打印到控制台时,它看起来很完美。
getChart()
{
let promise = new Promise((resolve, reject) => {
let dates: string[] = [];
let values: number[] = [];
let response: any = [];
let res: Observable<BodyFat[]> = this.db.list(this.BASE_PATH, ref => ref.orderByChild(this.DATE).limitToLast(40)).snapshotChanges()
.pipe(map(items => {
return items.map(item => {
let bodyfat = new BodyFat;
bodyfat.id = item.payload.key;
bodyfat.date = new Date(item.payload.child(this.DATE).val());
bodyfat.fat = item.payload.child(this.FAT).val();
return bodyfat;
})
}));
let i: number = 0;
res.subscribe(data => {
data.forEach(element => {
i++;
var shortDate = moment(element.date).format('DD.MM.YYYY');
if(dates.indexOf(shortDate) === -1)
{
dates.push(shortDate);
values.push(element.fat);
}
if(i === data.length-1)
{
response = {...}
};
resolve(response);
}
});
});
});
return promise;
}
this.bodyfatService.getChart().then(function(data)
{
this.bodyFat = new Chart(document.getElementById('bodyFatChart'), data);
});
目前我收到以下错误: 错误错误:未捕获(承诺中):TypeError:无法读取 null 的属性“长度” TypeError:无法读取 null 的属性“长度”
但我希望能画出图表。也许有一种更简单的方法可以以角度绘制 firebase 数据。顺便提一句。静态数据完美。
解决方案
推荐阅读
- python - 如何让 tkinter 与 Blender v2.90 一起工作?
- x86 - 有没有一种标准的方法可以计算出实模式下物理地址的 seg:off 表示?
- javascript - Javascript 使用一些数组值动态初始化嵌套映射
- python - 如何使用 ssh 运行显示图像的脚本?
- javascript - Microsoft Graph:如何在同一个线程中发送电子邮件,而无需客户先回复
- amazon-web-services - cloudformation如何回滚lambda部署?
- python - 一次构建一个字符串,检查它是否包含相邻的重复子字符串
- python - 根据特定条件删除数据帧的特定行
- c++ - 给定代码的 O(n) 和时间复杂度函数
- javascript - 替换部分对象键值