requiredResultOrThrow method

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

获取非空结果或抛出异常

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

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

如果WorkData.result为null则会抛出异常WorkException

Implementation

Future<D> requiredResultOrThrow([FutureOr<void> Function(D value)? onDo]) =>
    _completer.future.then((value) {
      if (!value.success) {
        return Future.error(WorkException._(
            _tag, value.errorType ?? WorkErrorType.other, value.message));
      }

      final result = value.result;

      if (result == null) {
        return Future.error(
            WorkException._(_tag, WorkErrorType.noResult, 'empty result'));
      }

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

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

      return Future.value(result);
    });