resultOrThrowMessage method

Future<D?> resultOrThrowMessage([
  1. FutureOr<void> onDo(
    1. D? value
    )?
])

获取结果或抛出纯字符串异常

如果任务执行成功即WorkData.success为true时,返回WorkData.result的未来。 如果任务执行失败即WorkData.success为false时,则抛出异常WorkData.message

onDo为任务执行成功即WorkData.success为true时,可选的执行函数, 参数为WorkData.result此函数的执行不会修改方法最终返回的值。

Implementation

Future<D?> resultOrThrowMessage([FutureOr<void> Function(D? value)? onDo]) =>
    _completer.future.then((value) {
      if (!value.success) {
        return Future.error(value.message ?? '');
      }

      if (onDo != null) {
        final done = onDo(value.result);

        if (done is Future<void>) {
          return done.then((_) => value.result);
        }
      }

      return Future.value(value.result);
    });