为 Javascript 中的绘图获取 API 数据
Fetch API data for plotly in Javascript
我希望这不是重复的。到目前为止,我可以找到一些关于此的教程和问题 - 但通常每个人都只想将他们的代码结果记录到控制台,这对我没有帮助。
我想从 API 中获取一些数据以将其绘制在网站上。
抓取似乎工作正常,因为我可以将 fetch.then() 中的结果记录到控制台。但是(很明显)他们不会在获取之外。
我能找到的唯一解决方案是将整个事情包装在另一个函数中 或 以编写一个函数来处理在 .then() 中获取的数据.
我无法实现第一个想法,因为出于与上述相同的原因我无法 return 任何事情(数据不会使其超出 .then() 之外)。
第二个有问题,因为我只是想将几个 .json 条目的结果绘制到 Plotly 图中。老实说,我不知道如何将这个 放在函数中 。
// Arrays for results
var sugars = [];
var times = [];
// fetch the BG data from the API and write results into arrays
fetch(url)
.then((resp) => {return resp.json()})
.then( (result) => {
// read glucose values from json
// logging the results/sugars/times to console from here works!
for (let i = 0; i < n_entries; i++) {sugars[i] = result[i]["sgv"]}
for (let i = 0; i < n_entries; i++) {times[i] = -i * timestep}
});
var x1;
var y1;
/*
// Dummy data to test plotly, these WORK for some reason.
x1 = [0, -5, -10, -15, -20];
y1 = [123, 119, 113, 107, 102];
*/
// These values, however, don't work:
/*
x1 = times;
y1 = sugars;
// this yields 'undefined' errors:
console.log(times)
*/
也许您可以尝试将提取和 return 数据分离到一个函数中,您可以在其中使用数据来执行您想要的操作。您可以尝试这样的操作-我认为这与其他人的评论相同。
//make the fetch and return response data as json
async function getData() {
let url = 'your url';
try {
let resp = await fetch(url);
return await resp.json();
} catch (error) {
console.log(error);
}
}
//do whatever you want with the data response
async function myFunc() {
let data = await getData();
//do some stuff with your data here
}
//call the function
myFunc();
如果卡住就看看this link
我希望这不是重复的。到目前为止,我可以找到一些关于此的教程和问题 - 但通常每个人都只想将他们的代码结果记录到控制台,这对我没有帮助。
我想从 API 中获取一些数据以将其绘制在网站上。
抓取似乎工作正常,因为我可以将 fetch.then() 中的结果记录到控制台。但是(很明显)他们不会在获取之外。
我能找到的唯一解决方案是将整个事情包装在另一个函数中 或 以编写一个函数来处理在 .then() 中获取的数据.
我无法实现第一个想法,因为出于与上述相同的原因我无法 return 任何事情(数据不会使其超出 .then() 之外)。
第二个有问题,因为我只是想将几个 .json 条目的结果绘制到 Plotly 图中。老实说,我不知道如何将这个 放在函数中 。
// Arrays for results
var sugars = [];
var times = [];
// fetch the BG data from the API and write results into arrays
fetch(url)
.then((resp) => {return resp.json()})
.then( (result) => {
// read glucose values from json
// logging the results/sugars/times to console from here works!
for (let i = 0; i < n_entries; i++) {sugars[i] = result[i]["sgv"]}
for (let i = 0; i < n_entries; i++) {times[i] = -i * timestep}
});
var x1;
var y1;
/*
// Dummy data to test plotly, these WORK for some reason.
x1 = [0, -5, -10, -15, -20];
y1 = [123, 119, 113, 107, 102];
*/
// These values, however, don't work:
/*
x1 = times;
y1 = sugars;
// this yields 'undefined' errors:
console.log(times)
*/
也许您可以尝试将提取和 return 数据分离到一个函数中,您可以在其中使用数据来执行您想要的操作。您可以尝试这样的操作-我认为这与其他人的评论相同。
//make the fetch and return response data as json
async function getData() {
let url = 'your url';
try {
let resp = await fetch(url);
return await resp.json();
} catch (error) {
console.log(error);
}
}
//do whatever you want with the data response
async function myFunc() {
let data = await getData();
//do some stuff with your data here
}
//call the function
myFunc();
如果卡住就看看this link