クライアントで React と fetch を使用して、Discogs APIにリクエストを送信しています。この API では、1 分あたり最大 60 リクエストの制限があります。これを管理するために、Discogs は「残りのリクエスト」、「使用済みリクエスト」、「最大許容リクエスト」などのカスタム値をレスポンス ヘッダーに追加していますが、コアが原因でこれらのヘッダーを読み取ることができません。
そこで私がやろうと決めたのは、この API のリクエスト ラッパーを作成することです。
- 時間枠を定義します (この場合は 60 秒)。
- この時間枠で実行できる最大リクエスト数を定義します。
- 受信したリクエストをキューに入れ、制限に従って処理します。
- リクエストをキャンセルして、キューから引き出すことができます。
setTimeout
ジョブがキューに入れられ、リクエストの呼び出しを遅らせる機能で管理されるシングルトンオブジェクトを使用して、実際の例を実行することができました 。
これは、単純なコールバックを使用する場合に機能しますが、React コンポーネントに値を返す方法と、コールバック(フェッチ)の代わりに Promises を使用して実装する方法がわかりません。
また、react コンポーネントからのタイムアウトまたはフェッチ リクエストをキャンセルする方法もわかりません。
簡略化したこの例を確認できます。たぶんそれが最善の方法ではないか、このコードがたわごとであることはわかっています。そのため、それに関するヘルプやガイダンスをいただければ幸いです。