在 dart 中调试时如何访问 Future 值?
Posted
技术标签:
【中文标题】在 dart 中调试时如何访问 Future 值?【英文标题】:How to access Future values while debugging in dart? 【发布时间】:2020-08-10 02:02:32 【问题描述】:请点赞:https://github.com/dart-lang/sdk/issues/40198
我想知道如何在使用 vs-code 进行调试时获得未来的价值?现在我需要引入另一个临时变量来让调试器等待语句。这就是我目前访问值的方式:
Future<void> disconnect2() async
var conn = await isConnected;
if (conn) await internalDisconnect();
但我想写以下内容:
Future<void> disconnect() async
if (await isConnected) await internalDisconnect();
并且仍然可以使用调试器访问isConnected
的值。
到目前为止我尝试了什么:
尝试将表达式(await isConnected)
添加到手表。
试图在调试控制台中评估表达式(await isConnected)
。
尝试将表达式isConnected
添加到手表中。
试图在调试控制台中评估表达式isConnected
。
试图通过将鼠标悬停在实例上来访问该值。在屏幕截图中它是空的,但大多数时候我只能访问未来的对象。
有没有什么简单的方法可以在调试时访问 future 的值?
【问题讨论】:
【参考方案1】:在未等待和加载的情况下,您看不到未来值的值。其原因是,future 类型正在等待数据,因此它为未来值保留了部分内存。您只有在获得值 f.e. 后才能访问它。来自 REST API 的值。 您可以使用 then 方法并查看那里的值。
someFuture(arg).then((erg) => print(erg));
【讨论】:
是的,感谢您的回答。我知道未来是什么,但是在 vs 代码中必须有一种简单的方法来在调试时获得价值。例如,在 C# 中,如果您将“任务”(相当于 Dart 中的 Future)添加到手表中,它会为您等待它们。以上是关于在 dart 中调试时如何访问 Future 值?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据您在 Dart 中无法控制的 Stream 返回 Future?
如何在 dart 的 Future 函数中从 JSON 创建一个类对象?