requiredResultOrThrow method
获取非空结果或抛出异常
如果任务执行成功即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);
});