我有一个调用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的属性“长度”
但是我希望图表会绘制出来。也许有一种更简便的方法可以按角度绘制火力地带数据。顺便说一句。静态数据非常完美。