TaskQueue
TaskQueue
は非同期タスクを管理するクラスです。同時実行性を制御する方法はありません。すべてのタスクランナーは非同期的に実行されます。
インポート
import { TaskQueue } from "@tai-kun/surrealdb/utils";
.constructor()
new TaskQueue();
引数
なし。
返値
new
を通じて呼び出された場合、TaskQueue
はそのインスタンスを返します。
.count
インスタンス プロパティー 読み取り専用
現在キューに追加されているタスクランナーの数を表します。
.add()
インスタンス メソッド
.add
はタスクランナーをキューの追加します。
add<T>( runner: (args: TaskRunnerArgs) => T | PromiseLike<T>, options?: TaskOptions,): StatefulPromise<T>;
引数
runner
タスクランナーです。タスクランナーの引数には中止シグナル signal
を含む TaskRunnerArgs
が渡されます。
options
タスクランナーのオプションです。このタスクランナーの中止シグナルを渡すことができます。
返値
タスクランナーの返値で解決される StatefulPromise
を返します。
例
import { TaskQueue } from "@tai-kun/surrealdb/utils";
const queue = new TaskQueue();const promise = queue.add(async ({ signal }) => { const response = await fetch("https://example.com/", { signal }); return await response.text();});
const text = await promise;console.log(text);
.idle()
インスタンス メソッド
.idle
はキューが空になるまで待機するための関数です。キューからタスクランナーが削除されるのは、タスクランナーが解決/拒否問わず完了直後です。したがって、キューが空になるということは、すべてのタスクランナーの実行が完了したことを意味します。
idle(): StatefulPromise<void>;
引数
なし。
返値
void
で解決される StatefulPromise
を返します。
例
次の例では、キューに追加したタスクランナーの解決/拒否に関わらず終了するのを待ちます:
import { TaskQueue } from "@tai-kun/surrealdb/utils";
const queue = new TaskQueue();const results: string[] = [];queue.add(async () => { results.push("Hello");});queue.add(() => { throw null;});
console.log(queue.count);
await queue.idle();
console.log(queue.count);console.log(results);
出力:
20[ 'Hello' ]
上記の例では throw null
がどこにも補足されずに、スクリプトは正常に終了します。タスクランナーのエラーに気づくには、個別にエラーハンドリングする必要があります。
.abort()
インスタンス メソッド
.abort
は全タスクランナーの signal
に中止イベントを発送する関数です。
abort(reason?: unknown): void;
引数
reason
中止の理由です。
返値
なし。