1. ホーム
  2. dart

[解決済み] Dartで、再発する関数を実行するには?

2023-03-23 02:35:34

質問

ある関数を遅延させながら何度も実行したいです。Dartでこれを行うにはどうすればよいですか?

どのように解決するのですか?

を使用することができます。 Timer クラスを使って、ワンショットや繰り返しの関数をスケジュールすることができます。

繰り返し

ここでは、リピート機能の実行方法を説明します。

import 'dart:async';
main() {
  const oneSec = Duration(seconds:1);
  Timer.periodic(oneSec, (Timer t) => print('hi!'));
}

タイマは2つの引数、期間と実行する関数を取ります。持続時間は Duration . コールバックは1つのパラメータ、タイマー自身を取らなければなりません。

リピータータイマーをキャンセルする

使用方法 timer.cancel() を使って、リピータータイマーをキャンセルすることができます。これは、リピータータイマーからコールバック実行にタイマーが渡される理由の1つです。


遅延後のワンショット

ワンショット機能を遅延後にスケジュールする(一度だけ、将来のある時刻に実行する)。

import 'dart:async';
main() {
  const twentyMillis = Duration(milliseconds:20);
  Timer(twentyMillis, () => print('hi!'));
}

ワンショットタイマーのコールバックはパラメータを取らないことに注意してください。


できるだけ早くワンショット

ある関数をできるだけ早く、少なくともイベントループの1ティック先の未来に実行するよう要求することもできます。

import 'dart:async';
main() {
  Timer.run(() => print('hi!'));
}


HTMLでは

タイマーはHTMLでも動作します。実際には window.setTimeout が削除されたので、タイマは今後関数を実行する唯一の方法です。