Skip to content
Ydi edited this page Oct 6, 2024 · 11 revisions

クラスリファレンス

このアドオンは以下の 4 つのクラスを公開します。

  • Async
    非同期的な処理を抽象化するクラス。await を使いやすくする、このアドオンの中心となるクラスです。
  • Cancel
    Async に中止を指示するためのクラス。
  • AsyncIterator
    複数の途中結果を生成可能な Async。 1.0.2 で削除
  • AsyncGenerator
    複数の制御可能な途中結果を生成可能な Async。 1.0.2 で削除

その他の Nesinkrona で始まるクラスはアドオン外から使用することの無い、内部実装です。


Async Helper からの変更点

制約上妥協していた箇所の設計を変え、さらに結果を持てるようになりました。


変更箇所

  • Task を Async に変更

  • TaskUnit を Async に変更

  • Task.when_all() を Async.all() に変更

  • Task.when_any() を Async.any() に変更

  • CancellationTokenSource と CancellationToken を Cancel に変更 (1 つにまとめた)

  • Task.from_signal() を Async.from_signal_name() に変更


新しく追加された機能

  • Async.all_settled() を追加 (Async.all() はすべての完了を待つが、Async.all_settled() は完了を問わず処理を終えたことを待つ)
  • Async.race() を追加 (Async.any() はどれか 1 つの完了を待つが、Async.race() は完了を問わず処理を終えたことを待つ)
  • インライン関数 (ラムダ式、正式な名前不明) から生成メソッドを追加
    • Async.from()
    • Async.from_callback()
  • また、継続メソッドを追加
    • async.then()
    • async.then_callback()
  • Signal オブジェクトに対応した生成メソッドを追加
    • Async.from_signal()
  • キャンセルのタイミングを ?sync.*_callback() メソッドを除き async.wait() に集約した
  • ネストされた Async をアンラップするメソッドを追加
    • async.unwrap()
  • AsyncIterator を追加
  • AsyncGenerator を追加

JS の Promise や Iterator, Generator に近くなってます。

Clone this wiki locally