Я вызываю некоторые данные через API для ионного приложения, которое я делаю.Данные вызываются асинхронно, и мне нужно назначить данные различным переменным для использования в диаграмме, которая будет представлена пользователю.Я изо всех сил пытаюсь присвоить данные переменной, к которой я затем могу получить доступ из функции, которая создает диаграмму (я использую chart.js).Первоначально я пытался получить список дат из данных для использования в качестве шкалы оси X, просто для того, чтобы все заработало.
Я пытался сделать несколько вещей и потерпел неудачу.Сначала я думал, что это потому, что моя переменная была ограничена областью блока, но теперь я думаю, что это асинхронная проблема.Читал об обещаниях в течение нескольких часов, но, хотя я понимаю концепцию, которую я не вижу, чтобы применить ее к моему текущему коду (предположим, что проблема асинхронная! Я новичок в миссии самообучения здесь).
Так вот этот код, который обрабатывает извлечение данных из API
async getData() {
const loading = await this.loadingController.create({
message: 'Loading'
});
await loading.present();
this.api.getData()
.subscribe(res => {
console.log(res);
this.data1 = res[0];
loading.dismiss();
console.log(this.data1);
const datelabel = this.data1.result[1].date;
}, err => {
console.log(err);
loading.dismiss();
});
}
И это код, который создает диаграмму
useAnotherOneWithWebpack() {
var ctx = (<any>document.getElementById('canvas-linechart')).getContext('2d');
console.log('GotData', this.datelabel); //just to see what data I've got here if any in the console
var chart = new Chart(ctx, {
// The type of chart we want to create
type: 'line',
// The data for our dataset
data: {
labels: this.datelabel,
datasets: [{
data: [86,114,106],
label: "Africa",
borderColor: "#3e95cd",
fill: false
}, {
data: [282,350,411],
label: "Asia",
borderColor: "#8e5ea2",
fill: false
}, {
data: [168,170,178],
label: "Europe",
borderColor: "#3cba9f",
fill: false
}
]
},
options: {
title: {
display: true,
text: 'World population per region (in millions)'
}
}
});
}
Итак, я вызываю переменную datalabelпротив меток, но отображается как неопределенное на оси и в консоли.Я ожидаю увидеть три месяца (которые сохраняются в виде строк в переменной).Попробовал все виды сейчас, и это сводит меня с ума.Я даже не уверен, что это асинхронная проблема, но из того, что я сделал до сих пор, это похоже на проблему.
Любая помощь действительно ценится !!