问题标签 [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 投票
2 回答
1665 浏览

dart - 如何在 dart 中使用 Future 管理列表?

我是 Dart 的新手;并且,我创建了一个名为 Deck 的扑克牌对象列表。我正在尝试选择一张随机卡片,然后从牌组中取出卡片。我得到了重复,因为似乎在减少牌组之前选择了后续卡。我将如何处理未来的一系列事件,这些事件将从套牌中随机抽取 10 张独特的牌?

当我尝试将卡片对象作为未来返回时,我得到:

“卡”类型不是“计算”的“()=>动态”类型的子类型。

当我尝试返回甲板列表时,我得到:

类型“列表”不是“计算”类型“()=>动态”的子类型。

我是否缺少正确的语法、逻辑缺陷,或者我是否需要通过观察变化来以不同的方式处理列表?

编辑添加:期货语法有效,但是,删除似乎没有正确发生。我将代码更改为下面 Jim-Y 建议的代码,除了使用第二个命名构造函数从 List 预加载新 Card 对象。修改后的代码和打印输出如下:

如您所见,Clubs 的 10 被打印了两次。那么,如果 10 在第 6 遍中被删除,为什么它在第 7 遍中仍然存在?

0 投票
1 回答
101 浏览

dart - 等待其他期货提出的期货

我正在使用 Lawndart 库访问浏览器数据,并希望收集一组查询的结果。这是我认为应该起作用的:

但是,当回调被调用时,map它仍然是空的(它被正确填充,但稍后,在所有 Futures 完成之后)。我认为问题在于调用创建的期货getByKey()没有被调用创建的期货“捕获” forEach()

如何更正我的代码以正确捕获结果?

0 投票
2 回答
1308 浏览

dart - Dart - 流事件超时的单元测试

这是我在尝试对流进行单元测试时遇到的问题的一个非常简化的版本。

测试检查是否已将正确的事件添加到流中 - 它似乎工作正常 - 例如,将值更改add( 'test')add( 'test2')将使测试失败。

但是当您注释掉该行fireKeepAliveMessage(message);以便事件不会抛出时,单元测试将永远运行。

如何在测试中添加某种超时?或者有没有更好的方法来解决这个问题?

0 投票
4 回答
4515 浏览

dart - Dart 事件队列和微任务

我想了解飞镖事件循环是如何工作的。我从The Event Loop and Dart网站上阅读了事件循环文章,作者很好地解释了 dart 中的事件循环是如何工作的。

但我不明白的是,事件如何排队。例如

dart 会在事件队列中创建三个条目还是只创建一个?我知道,Future 类负责延迟执行,当我从它创建一个对象时

它只是事件循环中的一项。

在我上面提到的这篇文章中,我读到了微任务。这个微任务要在事件队列之前执行,但是我看不出有什么意义,为什么飞镖团队要实现这个微任务?也许我需要一些例子!

0 投票
2 回答
358 浏览

unit-testing - HttpClient & 单元测试

Dart、单元测试和一般异步编程的新手。和 StackOverflow,就此而言。尝试围绕shelf_route 构建一个RESTful 服务器并使用HttpClient 对其进行测试。

我的测试有效,但它们不会自行退出。相反,我必须手动终止该过程。我尝试了几种我在网上找到的方法,但没有运气。谁能帮我一把?这是我正在使用的:

更新:决定放弃 HttpClient 以支持该http包。更容易使用,我的测试现在自行终止。显然,我在第一次复飞时没有正确处理某些事情。这是上面的代码现在的样子:

0 投票
2 回答
337 浏览

mongodb - MongoDart 发现问题

我正在 Dart 中实现一个 MVC 框架。我正在实现 find 方法,我希望它从该查询中返回文档。

问题是 find() 不会等待操作执行完毕,我们需要在 then() 中绑定一个函数。

现在 find() 的返回值是 []。您知道正确归还文件的任何方法吗?

0 投票
1 回答
1281 浏览

dart - Dart HTTP 服务器和期货

我正在尝试编写简单的 HTTP 服务器来解析 client.getUrl() 的结果。除了我无法写回 http 请求对象(打印到控制台工作正常)之外,我已经完成了所有工作。

相关代码为:

问题是主要功能在我从 Future 获得结果之前结束(通过打印出现在结果之前的第二个“响应关闭”来解决这个问题)。有没有办法在主函数中等待结果?

编辑:它与Dart HttpRequest return future有关, 我将重写我的代码,但如果有办法在 main 函数中等待 getUrl Future,我会更喜欢它。

编辑:我的 loadUrl

最后编辑:这是工作代码

0 投票
1 回答
2456 浏览

dart - 来自原始未来之外的未来抛出异常句柄

我想了解飞镖未来异常是如何工作的。我读了一篇关于它的非常好的文章链接。但是当我嵌套了未来并且他们中的第一个抛出错误时,我如何在第二个未来处理这个错误。

为了澄清,我的意思是看下面的示例。

在 fur1 中,我抛出异常并希望在 fur2 中捕获错误,但编译器显示消息

未处理的异常:坏状态:Hello 错误

将来可以处理嵌套错误吗?我知道,我可以在这里使用完成者类,也许这将是解决方案?

0 投票
1 回答
8707 浏览

dart - 如何使用 dart future.sync 方法

当我尝试使用未来类中的future.sync时

我收到了错误信息

打破异常:NoSuchMethodError 类型的对象

我是否以错误的方式使用future.sync?

我的第二个问题是

为什么当我尝试从包中导入异步库时,我得到了编译器消息

打破异常:类型错误
未定义类'Future'类型的对象

我在这里做错了什么?

0 投票
1 回答
469 浏览

dart - 没有客户端或 http 服务器的 Timer 调用 Dart HttpClient.getUrl

编辑:问题与 Timer 或 HttpServer 无关,它是 dart.io sleep 功能暂停一切。它在文档中明确描述,我的错。

//

我在 HttpClient 在服务器代码中工作时遇到了奇怪的问题。我打电话

来自 Timer 对象,它永远不会到达打印步骤。它几乎是以前版本的复制和粘贴代码,不是从 Timer 调用的,而是从 HttpRequest 调用的。工作代码在我的问题 [这里][1] 中。它在长线上失败了,我怀疑这是它永远无法到达的最后一个未来(HttpClientResponseBody)。

Timer 对象是这样创建的(只是测试代码):

//编辑:好的,这是源代码,可能是一些微不足道的问题..我两天都想不通:-D