【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part29 Dartの特徴

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part29 )です。

前回

【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part28 Dartの特徴

今回もDartの特徴を学習します。

Dartの特徴

イベントループ

Dartはシングルスレッドで動作します。
「処理」はイベントループという機能のイベントキューに格納されて順次実行されます。
長~い処理がある場合、その後ろに並んでいる処理は待たなくてはなりません。

これは「 = 非同期」ではありません。
実際、マウスのクリックやファイルのI/O, タイマー完了など様々な場面で使用されます。
Dartで非同期の処理をFutureクラスで可能にしています。
並列処理はできませんが非同期処理はちゃんとできるんですね!

こちらの記事から

The Event Loop and Dart (翻訳) – Qiita

こちらの記事(原文?)を簡単に読んだ感じではDartの非同期はIsolateという機能が重要なようですね。

Dart asynchronous programming: Isolates and event loops | by Kathy Walrath | Dart | Medium

Future

他の言語ではプロミスと呼ばれている機能(クラス?)です。
非同期処理をする際にこの機能がないとコールバック地獄が発生するとのこと。なんででしょうか?

コールバック地獄からの脱出 – Qiita

非同期処理がしっかり完了した後、何か処理を行いたい場合にこのコールバック地獄に陥るということでしょうかね。
「待ち合わせ」と呼んでいる状況でしょうか。
コールバック地獄は「深いネスト」の実装になることが多く可読性が低下してしまうのが特徴のようです。

getA(a, (b) {
  getB(b, (c) {
    getC(c, (d) {
      print(d);
    });
  });
});

こうならないようにFutureという機能を使うようです。

Futureの特徴は「つなぐ」です。

 

最後に

Futureは少し長そうなので次回にまわしましょう。

今日はここまで!