在polymer.dart中使用聚合物的`.job`

时间:2014-09-12 23:06:38

标签: dart delay jobs dart-polymer

在Polymer中有一个this.job()函数来处理delayed processing of events。如何从polymer.dart访问此功能?

2 个答案:

答案 0 :(得分:1)

  @override
  void attached() {
    super.attached();
    dom.window.onMouseMove.listen(mouseMoveHandler);
  }

  PolymerJob mouseMoveJob;
  void mouseMoveHandler(dom.MouseEvent e) {
    print('mousemove');
    mouseMoveJob = scheduleJob(mouseMoveJob, onDone, new Duration(milliseconds: 500));
  }

  void onDone() {
    print('done');
  }

如果作业没有重新安排500毫秒,则执行该作业 在聚合物中,这通常在初始化时使用

xxxChanged(old);

被简单地多次调用,因为xxx更新了来自其他几个状态的更改,这些状态是一个接一个地初始化但是在上次更新时执行xxxChanged就足够了(更短的超时)应该使用0-20毫秒,具体取决于xxxChanged是仅从同步调用还是从异步代码调用。

我使用此模式(但未使用PolymerJob)的另一种情况是@observable字段绑定到滑块<input type="range" value='{{slider}}'>
当您移动旋钮时,这会在短时间内经常调用sliderChanged(oldVal, newVal)。更新的执行是昂贵的,并且无法在两个这样的调用之间完成,请参阅http://bwu-dart.github.io/bwu_datagrid/example/e04_model.html作为示例。 如果没有一些延迟执行,这将非常麻烦。

答案 1 :(得分:0)

尝试使用Future

doJob() => print('hi');

new Future(doJob).then((_) => print('job is done'));

以下是docs for the Future class