実現したいこと
typescriptで複数のfetchの処理の順番を変えたいです。
発生している問題・分からないこと
fetchでデータを2回取得して表示を行うコンポーネントを用意します。このコンポーネントを複数実装すると2回目のfetchは全てのコンポーネントの1回目のfetchが終わらないと実行されません。この順番を変更して「1回目のfetch→別コンポーネントの1回目のfetch」ではなく「1回目のfetch→2回目のfetch→別コンポーネントの1回目のfetch」と割り込ませる方法はないでしょうか?
該当のソースコード
typescript
1'use client' 2import { useEffect, useState } from "react"; 3 4export default function ComponentC() { 5 const [data, setData] = useState<string | null>(null); 6 useEffect(() => { 7 const fetchData = async () => { 8 const url = `api/componentA`; //返答に3秒かかるAPI 9 const response = await fetch(`${url}`, { 10 method: 'POST', 11 headers: { 12 'Content-Type': 'application/json', 13 }, 14 body: JSON.stringify({ URL: url }), // URLをリクエストボディに含める 15 }); 16 setData("componentAから取得"); 17 const url2 = `api/componentB`; //返答に3秒かかるAPI 18 const response2 = await fetch(`${url2}`, { 19 method: 'POST', 20 headers: { 21 'Content-Type': 'application/json', 22 }, 23 body: JSON.stringify({ URL: url }), // URLをリクエストボディに含める 24 }); 25 setData("componentBから取得"); 26 }; 27 fetchData(); 28 }, []); 29 30 return ( 31 <> 32 <div>div{data}</div> 33 </> 34 ); 35 36}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
「typescript fetch 順番」などで調べた結果、fetchで実行したい関数を配列に入れて制御する方法が見つかりました。しかしこの方法だと配列の中のどのfetchを優先して実行するかの処理に加えて排他的制御が必要なので少し手間になると考えました。コンポーネントの描画順でfetchを優先する方法などはないでしょうか?
補足
特になし
回答2件
あなたの回答
tips
プレビュー