How to fetch data from multiple urls at once?

Related searches

I have a function that fetches from a url in React

const DataContextProvider = (props) => {
  const [isLoading, setLoading] = useState(false);
  const [cocktails, setCocktails] = useState([]);

  useEffect(() => {
    const fetchCocktailList = async () => {
      const baseUrl = 'https://www.thecocktaildb.com/api/json/v1/1/';
      setLoading(true);
      try {
        const res = await fetch(`${baseUrl}search.php?s=margarita`);
        const data = await res.json();
        console.log(data);
        setCocktails(data.drinks);
        setLoading(false);
      } catch (err) {
        console.log('Error fetching data');

        setLoading(false);
      }
    };

    fetchCocktailList();
  }, []);


How I'm mapping data so far.

const DrinkList = () => {
  const { cocktails } = useContext(DataContext);
  return (
    <div className='drink-list-wrapper'>
      {cocktails.length > 0 &&
        cocktails.map((drink) => {
          return <DrinkItem drink={drink} key={drink.idDrink} />;
        })}
    </div>
  );
};

However I want to fetch from this url also ${baseUrl}search.php?s=martini

I would like a good clean way to do this and set my state to both of the returned data.

How To Extract Data From Multiple Webpages With Power Query , First, we will create a query to extract the data on one page. We will then turn this into a function query where the input is an event page URL. This way we can apply the query to each URL in a list of all the URL's. Head to the Data tab in the ribbon and press the From Web button under the Get & Transform section. First, we will create a query to extract the data on one page. We will then turn this into a function query where the input is an event page URL. This way we can apply the query to each URL in a list of all the URL’s. Head to the Data tab in the ribbon and press the From Web button under the Get & Transform section.

First base the data fetch function on a parameter:

const fetchCocktail = async (name) => {
  const baseUrl = 'https://www.thecocktaildb.com/api/json/v1/1/';
  try {
    const res = await fetch(`${baseUrl}search.php?s=` + name);
    const data = await res.json();
    return data.drinks;
  } catch (err) {
    console.log('Error fetching data');
  }
}

Then use Promise.all to await all results:

setLoading(true);
var promises = [
  fetchCocktail(`margarita`),
  fetchCocktail(`martini`)
];
var results = await Promise.all(promises);
setLoading(false);
DrinkList(results);

Where results will be an array with the responses that you can use on the DrinkList function.

How to extract text from multiple web site URLs at once, The same way you'd scrape the text data from one URL is same thing to apply here but this time action is repeated severally for different URL. It's as simple as that. So this is a GET request, the default one for the fetch function but of course we can do all other types of requests and also change the headers and off course send data, all we need for this is to set our object and pass it as the second argument of the fetch function: const url = 'https://randomuser.me/api'; // The data we are going to send

var promises = [ fetchCocktail(api1), fetchCocktail(api2) ]; var results = await Promise.allSettled(promises);

Extract data from a list of URLs, There isn't just one way to scrape a webpage, depending on how the webpage is structured, there are usually multiple approaches you can try. In� That's if for the implicit programmatic data fetching with the effect hook. You can decide on which state the effect depends. Once you set this state on a click or in another side-effect, this effect will run again. In this case, if the URL state changes, the effect runs again to fetch stories from the API. Loading Indicator with React Hooks

Scrape data from multiple web pages/URLs, For some websites, we would suggest that you use the “URL list” loop to extract information out of multiple web-pages with a similar layout. You can observe� # Data Fetching. Sometimes you need to fetch data from the server when a route is activated. For example, before rendering a user profile, you need to fetch the user's data from the server. We can achieve this in two different ways: Fetching After Navigation: perform the navigation first, and fetch data in the incoming component's lifecycle

Web Scraping: Scraping Multiple URLs, In this tutorial we will learn how to perform web scraping on multiple URLs without Once you have created an array, start a loop from the beginning and do BeautifulSoup(html, "html.parser") ## Then parse the HTML, extract any data� By adding .json() directly to each fetch, we ensure that individual fetches start reading data as JSON without waiting for each other. That’s an example of how low-level Promise API can still be useful even if we mainly use async/await .

Selecting the ‘Advanced’ option, we can Identify the part of the URL that has the date, and enter the parameter in its place instead. We should also include the last bit of the URL after the Year parameter. We do this by ‘Adding Parts’ to the URL. Once that is done click ‘OK’.

Comments
  • When you fetch martini and setCocktails with that response should it replace the margarita response, or do you want it to add these drinks to some object/array?
  • It should not replace. I want cocktails to contain both martinis and margaritas. So I can map them.
  • How do you want to handle errors in individual network requests? Should the entire operation fail if one request fails or should it succeed with partial data?
  • Ok, then can you please also share your component code so we see what your state objects look like so setCocktails can properly merge in the new drinks?
  • My first would be it should fail. However I am learning so if its best practice to handle separately then I would go with that.
  • This works after a quick copy and paste to check. But embarrassing for me as I don't understand parts of it. Such as URLSearchParams, using .flat ect and could never explain it to anyone! Is there a way of stripping this down to a more beginner friendly level?
  • It's written that way to be extensible and as a model for learning. There are definitely parts that can be simplified for a more hard-coded approach, but is that what you really want? URLSearchParams handles encoding of the search parameters for you. If you want to add more parameters, just add to the object argument in the constructor call. array.flat() just flattens a multi-dimensional array however many levels you ask it to. Check out the MDN articles on those two to understand them more. I'll add a few comments to the code.
  • Good luck! Some React concepts can be kind of mind-bending. Docs, docs, docs...
  • This is what I was going to respond with, but would like to note that Promise.allSettled will allow you to handle mixed success/failure, whereas Promise.all will reject for any failure
  • You should probably also setLoading(false) after the try/catch in the finally for cleanup
  • Nevermind, you keep changing your code. I'll stop commenting until you've finalized all of your edits.
  • @jsejcksn finished :D
  • I've tried this and its crashing the browser. Maybe because of an infinite loop due to the useEffect hook?