Skip to content

Commit

Permalink
Added Abort controller when fetching data
Browse files Browse the repository at this point in the history
  • Loading branch information
NikuPAN committed Oct 22, 2024
1 parent 42ae5d3 commit 5f4ab35
Showing 1 changed file with 25 additions and 10 deletions.
35 changes: 25 additions & 10 deletions src/pages/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,13 @@ const Home: NextPage = () => {
const [plannedMaintenanceData, setPlannedMaintenanceData] =
useState<PlannedMaintenanceData | null>(null);

const fetchData = async (dataFilePath: string, setData: any) => {
const fetchData = async (
dataFilePath: string,
signal: AbortSignal,
setData: any
) => {
try {
const response = await fetch(dataFilePath);
const response = await fetch(dataFilePath, { signal });
if (!response.ok) {
throw new Error(`Error fetching data from ${dataFilePath}!`);
}
Expand All @@ -50,22 +54,33 @@ const Home: NextPage = () => {
};

useEffect(() => {
const controller = new AbortController();
const signal = controller.signal;

// Initial fetch
const fetchAllData = async () => {
await fetchData("./status.json", setStatusData);
await fetchData("./incidents.json", setIncidentData);
await fetchData("./planned_maintenance.json", setPlannedMaintenanceData);
const fetchAllData = async (signal: AbortSignal) => {
await fetchData("./status.json", signal, setStatusData);
await fetchData("./incidents.json", signal, setIncidentData);
await fetchData(
"./planned_maintenance.json",
signal,
setPlannedMaintenanceData
);
};

fetchAllData();
fetchAllData(signal).then();

// Poll every 60 seconds
const intervalId = setInterval(async () => {
await fetchData("./status.json", setStatusData);
await fetchData("./status.json", signal, setStatusData);
}, 60000);

// Clean up interval on component unmount
return () => clearInterval(intervalId);
return () => {
// Clean up interval on component unmount
clearInterval(intervalId);
// Abort the fetch request if the component unmounts
controller.abort();
};
}, []);

return (
Expand Down

0 comments on commit 5f4ab35

Please sign in to comment.