Javascript 如何获取多个API请求或URL并从每个URL或API请求中检索数据?
在这个方法中,我获取了一个API请求URLJavascript 如何获取多个API请求或URL并从每个URL或API请求中检索数据?,javascript,Javascript,在这个方法中,我获取了一个API请求URL function fetchData() { let url = 'http://127.0.0.1:8000/api/onlineUserData'; fetch(url) .then(response => response.json()) .then(data => { var users=data.users; console.log(data.users); }); } 当
function fetchData() {
let url = 'http://127.0.0.1:8000/api/onlineUserData';
fetch(url)
.then(response => response.json())
.then(data => {
var users=data.users;
console.log(data.users);
});
}
当我执行console.log(data.users)
时。结果或数据将如下所示
[["Month", "Anam", "Panam", "duliyan"], ["Apr-16", 21, 26, 29], ["May-07", 0, 0, 5]]
但现在我想获取多个URL或API请求,并同时检索每个API请求数据。
从这个链接中,我找到了promise的用法,但我不知道如何使用它来检索单个API请求数据
将代码更新为以下内容:
function fetchData(){
let urls = [
{
url: 'http://127.0.0.1:8000/api/onlineUserData',
type: 'offline'
},
{
url: 'http://127.0.0.1:8000/api/offlineUserData',
type: 'offline'
},
{
url: 'http://127.0.0.1:8000/api/onlineUserData',
type: 'online'
},
];
let requests = urls.map(item => fetch(item.url).then(response => response.json()));
const resultData = { offline: [], online: [] };
Promise.all(requests)
.then(datas => {
datas.forEach(
(data, i) => {
const url = urls[i];
if (url.type === 'offline')
resultData.offine.push({...url, data});
if (url.type === 'online')
resultData.online.push({...url, data});
});
console.log({resultData});
/*
{
resultData: {
offline: [
{
url: 'http://127.0.0.1:8000/api/oflineUserData',
type: 'offline',
data: [...]
},
{
url: 'http://127.0.0.1:8000/api/offlineUserData',
type: 'offline',
data: [...]
},
],
online: [
{
url: 'http://127.0.0.1:8000/api/onlineUserData',
type: 'online',
data: [...]
},
]
}
}
*/
}
));
}
将代码更新为以下内容:
function fetchData(){
let urls = [
{
url: 'http://127.0.0.1:8000/api/onlineUserData',
type: 'offline'
},
{
url: 'http://127.0.0.1:8000/api/offlineUserData',
type: 'offline'
},
{
url: 'http://127.0.0.1:8000/api/onlineUserData',
type: 'online'
},
];
let requests = urls.map(item => fetch(item.url).then(response => response.json()));
const resultData = { offline: [], online: [] };
Promise.all(requests)
.then(datas => {
datas.forEach(
(data, i) => {
const url = urls[i];
if (url.type === 'offline')
resultData.offine.push({...url, data});
if (url.type === 'online')
resultData.online.push({...url, data});
});
console.log({resultData});
/*
{
resultData: {
offline: [
{
url: 'http://127.0.0.1:8000/api/oflineUserData',
type: 'offline',
data: [...]
},
{
url: 'http://127.0.0.1:8000/api/offlineUserData',
type: 'offline',
data: [...]
},
],
online: [
{
url: 'http://127.0.0.1:8000/api/onlineUserData',
type: 'online',
data: [...]
},
]
}
}
*/
}
));
}
我不明白你对答案做了什么。显示您编辑的代码。@jinongun我只想获取两个API URL并从这些URL中检索数据,然后放入变量,如var online user和var offline-user。本文的要点是我想从两个URL中求和/添加这些数据。您是否尝试查看
控制台。日志
?你看到了什么?200在您的解决方案中的console.log()中执行此操作为什么不检查响应
?我没有给你答案。我只是给你提建议。你应该考虑一下。尝试console.log(response)
而不是console.log(response.url)我不知道你对答案做了什么。显示您编辑的代码。@jinongun我只想获取两个API URL并从这些URL中检索数据,然后放入变量,如var online user和var offline-user。本文的要点是我想从两个URL中求和/添加这些数据。您是否尝试查看控制台。日志
?你看到了什么?200在您的解决方案中的console.log()中执行此操作为什么不检查响应
?我没有给你答案。我只是给你提建议。你应该考虑一下。尝试console.log(response)
而不是console.log(response.url)代码>感谢您的回复,但假设有两个变量,如online和offline,我希望将每个API请求数据分别存储在变量中。如“”来自此URL的数据分别存储在online变量和offline变量中。您能用您希望结果如何在End中的片段更新您的答案吗?假设我有两个变量不同的URL“”,“”我只需要获取它们并检索它们的数据我已经更新了答案检查有关输出的日志,看看它是否有帮助它是否可以工作,请确保在URL
中定义type:offline
,谢谢您的回答,但假设有两个变量,如online和offline,我希望将每个API请求数据分别存储在变量中。如“”来自此URL的数据分别存储在online变量和offline变量中。是否可以使用您希望结果在结尾处的方式假设我有两个不同的URL“”,“”我只需要获取它们并检索它们的数据我已经更新了答案检查关于输出的日志,看看它是否有帮助它将工作,确保您在URL
中定义类型:offline