是否可以循环遍历 API,打印单独的结果,然后将它们组合成一个变量?

Is it possible to loop through an API, print separate results, and then combine them into a single variable?

我正在尝试阅读多个 Reddit post 的观点。我有使用 6 API 次调用的想法,但我认为我们可以将其重构为 2 次调用。

我正在撞墙 - 是否可以循环遍历多个 APIs(我们正在废弃的每个 Reddit post 一个循环),打印结果,然后添加它们变成一个单一的变量?

最后一部分是我卡住的地方。在 API 循环之后,我得到了每个循环的单独输出,我不知道如何将它们添加到一个变量中......

下面是代码的简单版本:

import React, { useState, useEffect } from 'react';


function App() {

    const [testRedditComments, setTestRedditComments] = useState([]);

    const URLs = [
        'https://www.reddit.com/r/SEO/comments/tepprk/is_ahrefs_worth_it/',
        'https://www.reddit.com/r/juststart/comments/jvs0d1/is_ahrefs_worth_it_with_these_features/',
    ];

    useEffect(() => {
        URLs.forEach((URL) => {
            fetch(URL + '.json').then((res) => {
                res.json().then((data) => {
                    if (data != null) setTestRedditComments(data[1].data.children);
                });
            });
        });
    }, []);

    
    //This below finds the reddit comments and puts them into an array
    const testCommentsArr = testRedditComments.map(
        (comments) => comments.data.body
    );

    //This below takes the reddit comments and terns them into a string.
    const testCommentsArrToString = testCommentsArr.join(' ');


    console.log(testCommentsArrToString);

我尝试了多种方法来将字符串加在一起,但我已经浪费了很多时间。任何人都知道这是如何工作的。或者有更简单的方法来完成这个吗?

感谢您抽出时间,如果您需要任何说明,请告诉我。

-乔希

const URLs = [
  "https://www.reddit.com/r/SEO/comments/tepprk/is_ahrefs_worth_it/",
  "https://www.reddit.com/r/juststart/comments/jvs0d1/is_ahrefs_worth_it_with_these_features/",
];
Promise.all(
  URLs.map(async (url) => {
    const resp = await fetch(url + ".json");
    return resp.json();
  })
).then((res) => console.log(res));

我已经使用 Promise.all 并得到了响应并附加了一个具有相同响应的沙箱。

根据您的要求,您可以使用状态值,也可以在将其设置为状态之前准备好您的 api 响应。