javascript - 加载另一个 API 数据的 1 个 API
问题描述
所以我试图使用来自一个 API 的数据(特别是一个国家的 iso3 代码)从另一个 API 加载它的 LatLong,然后在地图上绘制。
我遇到的问题是我将 preload() 中的第一个 API(自然灾害位置)加载到一个数组中,然后我无法访问该数组中的信息来获取列出的所有灾难的 iso3,除非我从 draw( )。
问题是当我将 latlong 数据加载到地图中时,它会出现未定义,但是当我从 preload() 加载 latlong 时,灾难数据是未定义的。
此代码一直有效,直到调用 mapM() 并尝试从临时数组中加载 latlong 值,因为它们返回未定义,无论我在哪里这些 GET 查询始终未定义。
任何帮助都非常感谢,我对 JS 很陌生,所以放轻松!
解决方案
通读参考资料通常可以最好地回答此类问题:
此方法是异步的,这意味着它可能不会在您的草图中的下一行执行之前完成。
这意味着您的temp[i] = loadJSON(urlC);
线路会触发,但在您的线路执行之前并未完成。console.log(temp);
这是因为该loadJSON()
函数是异步的,这意味着它在后台运行,而不是在主线程上。这通常很有用,因为您不希望每次发出新请求时代码都冻结,但这也会导致像您这样的错误。
为了解决这个问题,您可以在您的线路中添加一个回调函数。loadJSON()
再次,从参考:
function setup() {
noLoop();
var url =
'https://earthquake.usgs.gov/earthquakes/feed/v1.0/' +
'summary/all_day.geojson';
loadJSON(url, drawEarthquake);
}
function draw() {
background(200);
}
function drawEarthquake(earthquakes) {
// Get the magnitude and name of the earthquake out of the loaded JSON
var earthquakeMag = earthquakes.features[0].properties.mag;
var earthquakeName = earthquakes.features[0].properties.place;
ellipse(width / 2, height / 2, earthquakeMag * 10, earthquakeMag * 10);
textAlign(CENTER);
text(earthquakeName, 0, height - 30, width, 30);
}
请注意,该drawEarthquake()
函数被传递到loadJSON()
函数中。当loadJSON()
函数完成时,它会自动调用该drawEarthequake()
函数。
你可能想做类似的事情。
推荐阅读
- python - 在字典中搜索列表的值并将其添加到新字典中
- c# - 统一变换中的无端旋转
- c# - 如何在按钮中有多个内容?
- node.js - 如何获取我的不和谐机器人所在的公会列表?
- python - PyPDF2无权在ubuntu上保存pdf
- regex - 如果行匹配或以尖括号开头和结尾,则正则表达式匹配
- python - File-based Sessions 的文件存储在系统文件的哪里?
- javascript - 如何从需要 api 密钥才能访问 reactjs 中的数据的 url 获取 json 数据?
- jenkins - Kubernetes 上 Jenkins 的 Nginx 重定向
- python - Pyspark 中的 None/== vs Null/isNull?