首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拓展未来

拓展未来
EN

Stack Overflow用户
提问于 2013-12-17 17:54:58
回答 2查看 347关注 0票数 1

我发现很多关于在Dart中使用而不是定义期货的内容。假设我有letsWait(),这需要相当长的时间。如何使用Future类?

代码语言:javascript
复制
import 'dart:async';

void main() {
  print('Let\'s get started');
  ArtificialWait waitPoint = new ArtificialWait();
  Future<String> future = waitPoint.letsWait();
  // and how about printing the return here?
  print('something fast');
}

class ArtificialWait extends Future<String> {
  String letsWait() {
    for (var i = 0; i < 5000000000; i++) {
      // lol
    }
    return 'finally';
  }
}

这个尝试给了我一个:

unresolved implicit call to super constructor 'Future()' class ArtificialWait extends Future<String> {

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-17 18:03:40

我不知道你为什么要继承未来。通常情况下,您会这样使用:

代码语言:javascript
复制
import 'dart:async';

void main() {
  print('Let\'s get started');
  artificialWait().then((e) => print(e));
  // and how about printing the return here?
  print('something fast');
}

Future<String> artificialWait  () {
  var completer = new Completer<String>();
  Timer.run(() {
    for (var i = 0; i < 5000000000; i++) {
      // lol
    }
    completer.complete('finally');
  });
  return completer.future;
}
票数 2
EN

Stack Overflow用户

发布于 2013-12-17 20:23:03

你只需要“利用”未来,而不是试图延长未来。

代码语言:javascript
复制
import 'dart:async';

void main() {
  print('Let\'s get started');
  ArtificialWait waitPoint = new ArtificialWait();
  Future<String> future = waitPoint.letsWait();
  // and how about printing the return here?
  print('something fast');
}

class ArtificialWait {
  Future<String> letsWait => new Future<String>(_letsWait);

  String _letsWait() {
    for (var i = 0; i < 5000000000; i++) {
      // lol
    }
    return 'finally';
  }
}

一般来说,除非在某些情况下,否则可以不用完全器来建造未来。未来的默认构造函数将自动将传递的函数(不带参数)包装在Timer.run()中,以便异步执行它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20641336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档