Future<T>.sync 构造函数
- FutureOr<
T> computation(
返回一个立即调用 computation
的结果。
如果调用 computation
抛出异常,则返回的可用 future 将完成错误。
如果调用 computation
返回一个 Future<T>
,则返回该 future。
如果调用 computation
返回一个非 future 的值,则返回一个已完成该值的 future。
示例
final result = await Future<int>.sync(() => 12);
实现
factory Future.sync(FutureOr<T> computation()) {
try {
var result = computation();
return result is Future<T> ? result : _Future<T>.value(result);
} catch (error, stackTrace) {
var future = new _Future<T>();
AsyncError? replacement = Zone.current.errorCallback(error, stackTrace);
if (replacement != null) {
future._asyncCompleteError(replacement.error, replacement.stackTrace);
} else {
future._asyncCompleteError(error, stackTrace);
}
return future;
}
}