wretch middlewares
1.0.0
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 ( )
} )
] ) . /* ... */
如果出現錯誤(或直到自訂條件為真),請多次重試請求。
milliseconds
每次嘗試之間的計時器。
(delay, nbOfAttempts) => milliseconds
用於根據計時器和嘗試次數計算實際延遲的自訂函數。
number
解決帶有最後一個錯誤的承諾之前的最大重試次數。指定 0 意味著無限次重試。
(fetchResponse, error) => boolean | Promise<boolean>
將重試該請求,直到滿足該條件為止。
({ response, error, url, options }) => { url?, options? } || Promise<{url?, options?}>
在重試請求之前將執行的回調。如果此函數傳回具有 url 和/或 options 屬性的對象,它們將覆寫重試請求中的現有值。如果它返回 Promise,則在重試請求之前將等待它。
boolean
如果為 true,則在拋出網路錯誤時將重試請求。也將向onRetry
和until
方法提供「錯誤」參數。
(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 )
] ) . /* ... */