问题标签 [dart-async]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
565 浏览

dart - 如何在 Dart 中干净利落地执行多个异步 I/O 操作(Isolates)?

在 Dart 中,有一个 Isolates 的概念。我有一个应用程序(我正在 Dart 中进行试验),它有很多异步 IO,其中每个调用(它们是数据库调用)都依赖于前一个。所以我最终陷入了嵌套回调地狱。

我想知道 Isolates 是否可以解决嵌套回调汤,但它看起来有点冗长,我不确定它是否适合它。

下一个 ECMAScript Harmony 中还提出了可以解决这些问题的生成器,但是您目前如何以干净的方式在 Dart 中执行大量异步 IO?

0 投票
1 回答
261 浏览

dart - 当对象在 Dart 上准备好时如何调度事件?

我正在 Dart 中试验一些 WebGL,我创建了一个从单独文件加载着色器的类,我想在对象准备好时抛出一个事件(函数),所以我可以继续我的应用程序,知道我的着色器已正确加载. 有人知道这样做的简单方法吗?

0 投票
3 回答
19054 浏览

dart - 飞镖的完成者和未来?

以上是取自 github SQLJocky Connector的示例代码

如果可能的话,我希望有人向我解释为什么在 pool.query 之外创建了一个完成器对象的函数然后调用了一个函数 completer.complete(null)。

简而言之,我无法理解打印执行后的部分。

注意:如果可能的话,我还想知道 future 和 Completer 如何用于 DB 和非 DB 操作的实际用途。

我探索了以下链接: Google groups Discussion on Future and Completer

和下面给出的 api 参考文档 Completer api 参考Future api 参考

0 投票
2 回答
21351 浏览

dart - 如何在 Dart 中为 Completer.CompleteException(exception, stackTrace) 获取当前堆栈跟踪;

如果某些代码返回一个未来并确定未来应该返回“错误”或“异常”,如何将堆栈跟踪传递给Completer.completeException(exception, stackTrace);

0 投票
4 回答
943 浏览

dart - 流相当于 Observable.Throttle?

是否有等效于Observable.Throttle的 Streams ?如果没有 - 是否有任何相当优雅的方式来实现类似的效果?

0 投票
2 回答
5087 浏览

dart - 异步代码的 UnitTest 示例

在以某种方式阅读了Dart 单元测试后,我仍然无法理解如何将它与Futures 一起使用。

例如:

}); }

因此,在测试中,我创建了一个基本抽象类的实例,DatabaseBase其中包含一些实际MongoDb类的参数,并立即检查它是否已创建。然后我只运行一些非常简单的函数:AddMessage. 这个函数定义为:

并返回completer.future

如果传递message为空,则该函数将失败完成者:.completeError('Message can not be null');

在实际测试中,我想测试是否Future成功完成或有错误。所以以上是我尝试了解如何测试Future返回 - 问题是这个测试没有失败 :(

您能否在答案中写一个小代码示例如何测试返回的函数Future?在测试中我的意思是-有时我想测试返回(成功时)值,如果成功值不正确,则测试失败,而另一个测试应该失败,那么函数将失败Future并进入onError:阻塞。

0 投票
2 回答
1270 浏览

dart - 响应事件启动多个异步期货

我想启动一个相当昂贵的操作来响应用户点击画布元素。

我对 M4 Dart 的理解是,这个未来的构造函数应该异步启动“expensiveFunction”,也就是在与主线程不同的线程上。它确实以这种方式出现,因为“完成事件处理程序”立即打印到我在 IDE 中的输出窗口中,然后一段时间后打印“重绘画布”。但是,如果我再次单击该元素,则在我的“expensiveFunction”从上一次单击运行完成之前不会发生任何事情。

如何使用期货在新线程上简单地启动计算密集型功能,以便我可以将其中的多个排队以响应多次点击,即使第一个未来尚未完成?

谢谢。

0 投票
2 回答
1335 浏览

dart - 如何从 Future 返回 Future?或者这在异步库中是禁止的?

如何从 Future 对象返回 Future 值?此代码不起作用。

如何防止不必要的展开?

在这种情况下,在异步库“Future”中声明为泛型类。

如果我创建如下表达式

然后将类型T 指定为Future<int>泛型类 Future 的预期结果?

我认为结果必须与 type argument 中指定的一样T

IEFuture<int>.

但结果并不如预期。在 Dart API 站点上没有找到有关此异常行为的信息。

如果这是一个“功能”(但我认为异常行为错误地称为“功能”)那么为什么它没有记录在 Dart API 中?

如何解释这种差异?

为什么这段代码没有产生错误和警告?

另一个相同的示例,但不使用 Future。

如果在这种情况下结果与使用 Future 时一样(即意外),那么我们如何调用此代码?正常还是异常?

或者也许 Dart 中的未来有什么特别的(魔法)?

0 投票
1 回答
110 浏览

dart - 有返回值的事件

我正在使用该dart:async库进行一些数据处理。我正在向 a 添加对象,StreamController而另一个模块正在监听流。现在我想要,另一个模块将处理结果返回给add调用(作为未来)。

这是一些示例代码,应该说明我想要做什么(它不起作用,因为 add 方法不返回未来):

是否可以使用dart:async另一个库,或者我需要编写自己的类?

PS:替代方案如下,但使用简单的返回会“更复杂”:

0 投票
1 回答
189 浏览

dart - 由于 File.openRead 和 Streamhandling 导致内存泄漏?

我陷入了内存泄漏。我写了以下示例,它不断增加内存使用量:

有人可以出于某种原因给我一个提示吗?我没有任何线索:-(

一些小的附加问题:

有没有办法通过摆脱返回类型的 Future 封装来简化这个示例?我不想使用 File.existsSync(),而是想将 Future 处理添加到 Stream 处理之前。