Provider Options

Icon Link提供者选项

您可以在 Provider 实例化时提供各种选项 来修改其行为。

Icon LinkretryOptions

通过 Provider 对燃料节点的调用如果无法建立连接,则会失败。 指定重试选项允许您在最终抛出错误之前自定义处理该失败场景的方式。

注意:仅在无法建立连接时才会重试。如果已建立连接并且节点抛出错误,则不会进行重试。

您可以提供以下设置:

  • maxRetries - 在初始尝试失败后重新尝试的次数。
  • backoff - 用于定义尝试之间间隔的策略。
    • exponential (默认):每次尝试时将延迟加倍。
    • linear - 每次尝试时以线性方式增加延迟。
    • fixed:使用恒定的延迟时间间隔。
  • baseDelay (默认为 150ms) - 用于 backoff 策略的基本时间,单位为毫秒。
await Provider.create(FUEL_NETWORK_URL, {
  retryOptions: {
    maxRetries: 5,
    baseDelay: 100,
    backoff: 'linear',
  },
});

Icon LinkrequestMiddleware

允许您修改请求对象以添加额外的标头、修改请求体等。

// synchronous request middleware
await Provider.create(FUEL_NETWORK_URL, {
  requestMiddleware: (request: RequestInit) => {
    request.credentials = 'omit';
 
    return request;
  },
});
 
// asynchronous request middleware
await Provider.create(FUEL_NETWORK_URL, {
  requestMiddleware: async (request: RequestInit) => {
    const credentials = await fetchSomeExternalCredentials();
    request.headers ??= {};
    (request.headers as Record<string, string>).auth = credentials;
 
    return request;
  },
});

Icon Linktimeout

指定每个请求的超时时间(毫秒)。

await Provider.create(FUEL_NETWORK_URL, {
  timeout: 30000, // will abort if request takes 30 seconds to complete
});

Icon Linkfetch

提供一个自定义的 fetch 函数,它将替换默认的 fetch 调用。

注意:如果定义了 fetch,则 requestMiddlewaretimeoutretryOptions 也会应用于此自定义的 fetch 函数。

await Provider.create(FUEL_NETWORK_URL, {
  fetch: async (url: string, requestInit: RequestInit | undefined) => {
    // do something
    await sleep(100);
 
    // native fetch
    const response = await fetch(url, requestInit);
 
    const updatedResponse = decorateResponseWithCustomLogic(response);
 
    return updatedResponse;
  },
});