可取消重试

pub package Analyze & Test innim lint

将异步函数包装在具有可取消功能的自动重试逻辑中的实用程序。

特点

允许在某些条件下自动重试请求。重试逻辑使用指数退避实现,当通过网络进行请求时很有用。如果您不需要继续重试,则可以取消重试。在这种情况下,将返回最后的结果。

入门

要使用此插件,请将 cancelable_retry 添加到 pubspec.yaml 文件中的依赖项。

用法

创建 CancelableRetry 实例并调用 run()

import 'package:cancelable_retry/cancelable_retry.dart';

final request = CancelableRetry(
    // Provide request function
    () => doSomeRequest(),
    // Set conditions for retry
    retryIf: (result) => result == "retry",
    // Optional:
    // - Define max retry attempts
    maxAttempts: 8,
    // - Define max delay between retries
    maxDelay: const Duration(seconds: 30),
    // - Tune delay between retries
    delayFactor: const Duration(milliseconds: 200),
    randomizationFactor: 0.25,
  );

// Run request
final res = await request.run();

如果您想取消重试,只需调用 cancel()

await request.cancel();

GitHub

查看 Github