wretch
パッケージに統合されています。npm i wretch-middlewares
<!-- Global variable name : window.wretchMiddlewares -->
< script src =" https://unpkg.com/wretch-middlewares " > </ script >
重複排除 | リトライ | キャッシュのスロットリング | 遅れ |
---|
同時に複数の同一のリクエストが実行されるのを防ぎます。
(url, opts) => boolean
Skip が true を返した場合、重複排除チェックはスキップされます。
(url, opts) => string
リクエストを識別するために使用されるキーを返します。
(response: Response) => Response
この関数は、重複した呼び出しからのフェッチ応答を解決するときに呼び出されます。デフォルトでは、応答のクローンを作成して、複数のソースから本文を読み取れるようにします。
import wretch from 'wretch'
import { dedupe } from 'wretch-middlewares'
wretch ( ) . middlewares ( [
dedupe ( {
/* Options - defaults below */
skip : ( url , opts ) => opts . skipDedupe || opts . method !== 'GET' ,
key : ( url , opts ) => opts . method + '@' + url ,
resolver : response => response . clone ( )
} )
] ) . /* ... */
エラーが発生した場合 (またはカスタム条件が true になるまで) リクエストを複数回再試行します。
milliseconds
各試行間のタイマー。
(delay, nbOfAttempts) => milliseconds
タイマーと試行回数に基づいて実際の遅延を計算するために使用されるカスタム関数。
number
最後のエラーが発生した Promise を解決するまでの最大再試行回数。 0 を指定すると、無限に再試行されます。
(fetchResponse, error) => boolean | Promise<boolean>
リクエストは、その条件が満たされるまで再試行されます。
({ response, error, url, options }) => { url?, options? } || Promise<{url?, options?}>
リクエストを再試行する前に実行されるコールバック。この関数が URL プロパティやオプション プロパティを持つオブジェクトを返した場合、再試行されたリクエスト内の既存の値はオーバーライドされます。 Promise が返された場合は、リクエストを再試行する前に待機されます。
boolean
true の場合、ネットワーク エラーがスローされた場合にリクエストを再試行します。また、 onRetry
メソッドとuntil
メソッドに「error」引数も提供します。
(response: Response) => Response
この関数は、重複した呼び出しからのフェッチ応答を解決するときに呼び出されます。デフォルトでは、応答のクローンを作成して、複数のソースから本文を読み取れるようにします。
import wretch from 'wretch'
import { retry } from 'wretch-middlewares'
wretch ( ) . middlewares ( [
retry ( {
/* Options - defaults below */
delayTimer : 500 ,
delayRamp : ( delay , nbOfAttempts ) => delay * nbOfAttempts ,
maxAttempts : 10 ,
until : ( response , error ) => response && response . ok ,
onRetry : null ,
retryOnNetworkError : false ,
resolver : response => response . clone ( )
} )
] ) . /* ... */
// You can also return a Promise, which is useful if you want to inspect the body:
wretch ( ) . middlewares ( [
retry ( {
until : response =>
response . json ( ) . then ( body =>
body . field === 'something'
)
} )
] )
サーバー応答を一定期間保存して提供するスロットル キャッシュ。
milliseconds
応答は、キャッシュから削除されるまで、この期間保存されます。
(url, opts) => boolean
Skip が true を返した場合、重複排除チェックはスキップされます。
(url, opts) => string
リクエストを識別するために使用されるキーを返します。
(url, opts) => boolean
true の場合、キャッシュをクリアします。
(url, opts) => string | RegExp | Array<string | RegExp> | null
文字列または RegExp に一致する URL をキャッシュから削除します。配列を使用して複数の値を無効にすることができます。
response => boolean
false の場合、応答はキャッシュに追加されません。
string
設定されている場合、キャッシュから返される応答には、このオプションと同じプロパティ名が付けられます。
import wretch from 'wretch'
import { throttlingCache } from 'wretch-middlewares'
wretch ( ) . middlewares ( [
throttlingCache ( {
/* Options - defaults below */
throttle : 1000 ,
skip : ( url , opts ) => opts . skipCache || opts . method !== 'GET' ,
key : ( url , opts ) => opts . method + '@' + url ,
clear : ( url , opts ) => false ,
invalidate : ( url , opts ) => null ,
condition : response => response . ok ,
flagResponseOnCacheHit : '__cached'
} )
] ) . /* ... */
リクエストを特定の時間だけ遅らせます。
milliseconds
リクエストはその時間だけ遅れます。
import wretch from 'wretch'
import { delay } from 'wretch-middlewares'
wretch ( ) . middlewares ( [
delay ( 1000 )
] ) . /* ... */