相关疑难解决方法(0)

颤振孤岛与未来

我可能会对Isolate和Future有错误的想法,请帮我清理一下.以下是我对两个科目的理解.

隔离:在自己的事件循环中隔离运行代码,并且每个事件可以在嵌套的微任务队列中运行较小的任务.

未来:未来用于表示将来某个时间可用的潜在价值或错误.

我的困惑是:

  1. 文档说Isolate有它自己的循环?我觉得拥有自己的事件队列对我来说更有意义,我错了吗?

  2. 未来是否会在主Isolate上异步运行?我假设未来的任务实际上被放置在事件队列的末尾,所以如果它将来会循环执行.如我错了请纠正我.

  3. 为什么在有未来的时候使用Isolate?我看到一些使用Isolate的例子用于一些繁重的任务,而不是Future.但为什么?当将来在主隔离队列上异步执行时,它才对我有意义.

谢谢大家,感谢您的回复.

future dart dart-isolates flutter

12
推荐指数
3
解决办法
2889
查看次数

为什么 Future 会阻塞 ui 但网络请求不会出现抖动

我知道 Future 将在事件队列中运行。但是事件队列也在主隔离上运行,如果我将来执行一些繁重的任务(例如,计算从 1 到 1000000 的总和),它将阻塞我的 ui 代码。 \n但是 Future 在网络操作不会阻塞UI(如await httpClient.getUrl(uri))。\n为什么使用future的网络请求需要几秒钟而不阻塞UI,而计算操作会阻塞UI\xef\xbc\x9f

\n\n
@override\nvoid initState() {\nsuper.initState();\nFuture((){\n  var result;\n  for (var i = 0; i < 1000000; ++i) {\n    result = 'result is $i';\n  }\n  print(result);\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

}

\n\n

如果我在 initState() 中使用 Future 执行一些繁重的任务,用户界面将被阻止。

\n

dart flutter

4
推荐指数
1
解决办法
1533
查看次数

标签 统计

dart ×2

flutter ×2

dart-isolates ×1

future ×1