DART提供了一个FutureOr级的课程,允许写:
FutureOr<int> future;
future = 42; // valid
future = Future.value(42); // also valid
我假设如果可以同步读取值,那么FutureOr将有助于消除事件循环造成的不必要延迟.
但情况似乎并非如此,正如以下所示:
import 'dart:async';
void main() async {
print('START');
futureOrExample();
print('END');
}
void futureOrExample() async {
FutureOr<int> futureOr = 42;
print('before await');
await futureOr;
print('end await');
}
其中打印:
START
before await
END
end await
当我期待:
START
before await
end await
END
在这种情况下,为什么FutureOr(或者更一般的await 42
)是这样工作的呢?
同样,在这种情况下,FutureOr的作用是什么,因为它产生的结果与Future相同?
我知道我可以用SynchronousFuture来达到预期的效果,但我只是想知道FutureOr有什么用.