![](/img/trans.png)
[英]How do I return data from multiple APIs to display on one page in React?
[英]How do i get data from multiple apis simultanously and display them on my webpage?
我正在构建一个新闻/博客网站,它从外部 api 获取数据并将其显示到网页上。到目前为止,我已经设法从一个 api 呈现数据,但我的网页中还有一个运动部分,需要我获取数据来自另一个这样的 api,但我不知道如何做到这一点,而节点不会向我抛出错误。 下面是我的 NODE.JS 代码-
//jshint esversion: 6
const express = require('express');
const https = require('https');
const bodyParser = require("body-parser");
const ejs = require("ejs");
const app = express();
const port = 3000;
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true}));
app.use(express.static("public"));
app.get('/', (req, res) => {
const sporturl ="https://timesofindia.indiatimes.com/feeds/newsfeed/33187923.cms?
feedtype=sjson";
const newsurl = "https://timesofindia.indiatimes.com/feeds/newsdefaultfeeds.cms?
feedtype=sjson#";
https.get(newsurl, function(response){
var data;
response.on("data", function(chunk) {
if (!data) {
data = chunk;
} else {
data += chunk;
}
});
response.on("end", function() {
const fulldata = JSON.parse(data);
let mainHeader = fulldata.NewsItem[0].HeadLine;
let mainheaderurl = fulldata.NewsItem[0].WebURL;
let mainCaption = fulldata.NewsItem[0].Caption;
let mainUrl = fulldata.NewsItem[0].Image.Photo;
let featured = fulldata.NewsItem[1].HeadLine;
let featuredlink = fulldata.NewsItem[1].WebURL;
let featuredimg = fulldata.NewsItem[1].Image.Photo;
res.render("index",{
mainHeader: mainHeader,
headerUrl: mainheaderurl,
mainCaption: mainCaption,
imgUrl: mainUrl,
featured:featured,
featuredlink:featuredlink,
featuredimg:featuredimg,
});
});
});
});
app.listen(port, () => {
console.log(`server started on port 3000`);
});
// api key: ff827a803d4540f5814864d207fd23b5
// const mainHeadingUrl = "https://newsapi.org/v2/everything?q=tesla&from=2021-
05-26&sortBy=publishedAt&apiKey=ff827a803d4540f5814864d207fd23b5";
我会使用Fetch API (对于 nodeJS,你可以使用node-fetch )、 async/await和Promise.all
来收集数据。
将一些 API 调用推送到数组中。 它们将作为承诺返回(数据将(或不会)返回的承诺)。 Promise.all
一直等到所有这些承诺都解决了,然后将数据输出为一个数组,然后您可以对其进行迭代。
function mockApi(n) { return new Promise((res, rej) => { setTimeout(() => res(n), 2000); }); } // Here you would bundle up your fetch calls // eg: fetch(url) // I'm using mockApi as a convenience const fetchCalls = [mockApi(1), mockApi(2), mockApi(3)]; async function getData() { const data = await Promise.all(fetchCalls); console.log(data); } getData();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.