【问题标题】:Dart stream listen not working as expectedDart 流监听未按预期工作
【发布时间】:2020-10-14 07:17:40
【问题描述】:

第一次使用 dart 流。在下面的代码中,在 VSCODE 中单步执行时,会从转换结果跳转到最后的括号。它似乎没有执行任何监听回调。我该如何解决这个问题?

Future<void> addListsFileToDb(File file) async {
file.openRead().transform(utf8.decoder).listen(
    (String value) => print(value),
    onError: (error) => print(error),
    onDone: () => print("done"));}

【问题讨论】:

    标签: dart stream


    【解决方案1】:

    流(如期货)是异步的。当您调用listen 时,您告诉流开始工作,并设置一些回调以在流具有可用值时被调用......然后就完成了。

    稍后,根据流在做什么,可能更晚,流将生成它的第一个值。此时它将生成一个数据事件,该事件将调用数据回调/处​​理程序(此处为(String value) =&gt; print(value))。 在此之前,程序会继续正常执行,因此立即跳到 listen 调用的末尾是正确的预期行为,listen 调用会立即完成并且不会调用任何回调。

    【讨论】:

    • 谢谢。事实证明,为了在 VSCode 中查看到我的调试控制台的打印输出,我需要在回调中添加一个中断。我期待打印输出仍然打印到控制台,即使我没有在回调中放置中断。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    相关资源
    最近更新 更多