【发布时间】:2019-11-09 00:35:38
【问题描述】:
我知道 Future 将在事件队列中运行。但是事件队列也在主隔离上运行,如果我将来执行一些繁重的任务(例如,计算从 1 到 1000000 的总和),它将阻塞我的 ui 代码。 但是Future在网络操作中不会阻塞ui(比如await httpClient.getUrl(uri))。 为什么使用 future 的网络请求需要几秒钟而不阻塞 UI,而计算操作会阻塞 UI?
@override
void initState() {
super.initState();
Future((){
var result;
for (var i = 0; i < 1000000; ++i) {
result = 'result is $i';
}
print(result);
});
}
如果我在 initState() 中使用 Future 执行一些繁重的任务,UI 将被阻塞。
【问题讨论】: