【发布时间】:2020-05-13 19:43:44
【问题描述】:
Future<Either<Failure, User>> call(SignUpParams params) async {
Either<Failure, User> failureOrUser;
// Creates a User
failureOrUser = await repository.signUpUser(
params.email, params.password, params.type);
// Creates a [Learner / Instructor] if User returned
await failureOrUser.fold(
(failure) => left(failure),
(user) async {
final remoteServerFailureOrSuccess =
await createLearnerOrInstructor(CreateLOIParam(user: user));
// check if [Learner / Instructor] creation has failed
remoteServerFailureOrSuccess.fold(
(failure) => failureOrUser = left(failure),
(success) => null
);
}
);
return failureOrUser;
}
我不明白为什么我需要在 failureOrUser.fold(); 方法前面放置一个 await。
如果我不这样做,那么(user) async {} 方法就不会等待
final remoteServerFailureOrSuccess = await createLearnerOrInstructor(CreateLOIParam(user: user));
而return failureOrUser;在之前被调用
remoteServerFailureOrSuccess.fold(
(failure) => failureOrUser = left(failure),
(success) => null
);
被调用。
我得到一个 'await 在 'Object' 之前应用,这不是 Future' 错误提示,但代码只等到整个方法完成后才返回,这样做是这样的。 p>
我试过了
await remoteServerFailureOrSuccess.fold(
(failure) => failureOrUser = left(failure),
(success) => null
);
但这仍然不起作用。
所以在我看来是这样的
final remoteServerFailureOrSuccess = await createLearnerOrInstructor(CreateLOIParam(user: user));
实际上并没有在等待。
【问题讨论】:
标签: asynchronous flutter dart async-await