javascript - 如何在 Javascript 中进行 2 个连续的 API 调用?
问题描述
我打算从两个不同的 API(JSON 格式)中检索数据,解析然后在网页上显示每个提要的部分内容。
我的 Javascript 和 HTML 代码如下所示。结果:网页上只显示第二个 API 的数据,而不是第一个。
如何在网页上同时输出两个 API 的数据?谢谢!
我的 JavaScript 代码(apicall.js):
var apiurl = "api.json"
var apiurl1 = "api1.json"
// CALL THE FIRST API
function setup() {
loadJSON(apiurl, gotData);
}
var output = '';
function gotData(data) {
var daten = data.datatable.data[0]
var spalten = data.datatable.columns
for (var i=0; i < spalten.length; i++) {
output += '<p>' + spalten[i].name + ': ' + daten[i] + '</p>';
document.getElementById('root').innerHTML = output + '</br>';
}
}
// CALL THE SECOND API
function setup() {
loadJSON(apiurl1, gotData1);
}
var output1 = '';
function gotData1(data) {
var daten = data.datatable.data[0]
var spalten = data.datatable.columns
for (var i=0; i < spalten.length; i++) {
output1 += '<p>' + spalten[i].name + ': ' + daten[i] + '</p>';
document.getElementById('root').innerHTML = output1;
}
}
我的 HTML 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>API Call</title>
<link href="apicall.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.20/p5.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.20/addons/p5.dom.min.js"></script>
<script src="apicall.js"></script>
</body>
</html>
解决方案
如果您增加output
而不是仅在第二次调用中设置它怎么办?这样,我假设您可以在同一个setup
函数中调用这两个 API:
var apiurls = [
'api.json',
'api1.json'
],
elroot = document.getElementById('root'),
index = 0;
function setup() {
loadJSON(apiurls[index], gotData);
}
function gotData(data) {
var daten = data.datatable.data[0],
spalten = data.datatable.columns,
output = '';
for (var i = 0; i < spalten.length; i++) {
output = '<p>' + spalten[i].name + ': ' + daten[i] + '</p>';
elroot.innerHTML += '<br>' + output;
}
if (++index < apiurls.length) {
setup();
}
}
编辑:
我刚刚实现了一个用于调用n
API URL 的循环。由于该函数loadJSON
是异步的,所以回调最终gotData
会再次调用setup
,直到全部apiurls
通过。
推荐阅读
- laravel - 发生错误:ArtisanLambdaFunction - 解压后的大小必须小于 220606645 字节(服务:Lambda,状态码:4000
- mongodb - 如何使用 mongodb 在环回 4 中实现 groupBy?
- react-native - 从图库中获取图像的 url 并将图像从设备转换为 tensor3d
- git - 如果不存在标签,则获取第一次提交
- java - Android Studio (Windows) 中的 Flutter 错误:无法识别的选项:--add-opens
- reactjs - 如何使用 Storybook 制作别名?
- django - 通用 DeleteView 在 0x04725628 返回 django.db.models.query_utils.DeferredAttribute 对象 - Django
- microsoft-graph-api - ms botframework 附件无法生成共享链接
- android - 无法在 Android Studio 中添加其他平台/构建工具
- javascript - SVG:如何绘制多个半圆(弧)路径