我读过关于Zone的文章,并在许多语言中使用过Futures。我知道事件循环和Dart是单线程的。然而,当我写下面的代码时,我无法区分它的工作方式有多不同,以及何时使用一个而不是另一个。
zone和future的区别是什么?
例如:
runZoned(() async {
// Do Something
}, onError: (e, stackTrace) {
print(e);
});
VS
someAsyncCall().catchError((e) {
print(e);
});
1条答案
按热度按时间t40tm48m1#
Futures error handling
Zones
什么是未来
编辑1:我使用了 * runZonedGuarded * instaed * runZoned *,因为 * runZoned.onError * 已弃用。
Flutter : 'onError' is deprecated on runZoned function
嗨!使用runZoned,你基本上可以处理通常由future(http请求等)引起的异步错误。这个概念类似于同步代码中的try-catch。未来,你不能这样做。
runZoned示例:
结果:
未来的例子:
结果:
以及用于trhow异步错误的'_timerError()'方法: