Hideaki0225

相互フォローよろしくお願いします

PollerLikeとPollOperationStateとは

はじめに

こんにちは、ひであきです。

今回は、私自身が分からなかったPollerLikeとPollOperationStateの意味と違いについてのメモを記述をしています

PollerLikeとは

Pollerクラスの抽象表現です。

ユーザーが操作する必要のある最小限のAPIのみを公開することを目的としているインターフェースです。

(Pollerクラスとは完了状態に達するまで連続した要求をポーリングするプログラムの定義を表すクラスです。

そのため、実行している操作が完了するまでpoll()メソッドを繰り返し呼び出して要求ごとにポーリングを行っています。)

※Polling(ポーリング)とは、通信やソフトウェアにおいて、競合を回避したり、送受信の準備状況を判断したり、処理を同期したりするために、複数の機器やプログラムに対して順番に定期的に問い合わせを行い、一定の条件を満たした場合に送受信や処理を行う通信及び処理方式のことです。


PollOperationStateとは

長時間実行される操作ポーラーを定義するために必要なプロパティの最小セットの意見リストが含まれたインターフェースです。

機能としては、リモートの長時間実行操作のステータスを文書化します。

そのため、実装に必要なカスタムプロパティを格納するために使用されます。

少なくとも、操作の開始時、終了時、およびキャンセル時に更新する必要があります。

実装には、他の理由で更新できる他の数のプロパティを含めることができます。

※PollOperationStateインターフェースとPollOperationインターフェースのプロパティーのstateとは違います。


それぞれのインターフェースの取得できる情報

PollerLike

  • cancelOperation({ abortSignal?: AbortSignalLike })
  • getOperationState()
  • getResult()
  • isDone()
  • isStopped()
  • onProgress((state: TState) => void)
  • poll({ abortSignal?: AbortSignalLike })
  • pollUntilDone()
  • stopPolling()
  • toString()

以上の順番でメソッドの説明を記述します。

cancelOperation({ abortSignal?: AbortSignalLike })

実行している操作の基になる操作をキャンセルしようとします。

function cancelOperation(options?: { abortSignal?: AbortSignalLike })
: Promise<void>

引数
{ abortSignal?: AbortSignalLike }
実行している操作のシグナルを中止するオプションを記述する

戻り値
Promise<void>
戻り値なし

getOperationState()

操作の状態を返す。PollerLike で定義される TState は、Poller の実装で定義される TState のサブセットとすることができる。

function getOperationState(): TState

引数
なし

戻り値
TState
操作状態の値

getResult()

ポーラの状態に関係なく、操作の結果値を返す。実装によっては、未定義または最終的な TResult 値の不完全な形式を返すことがあります。

function getResult(): TResult | undefined

引数
なし

戻り値
TResult
操作の結果値

isDone()

ポーラーがポーリングを終了した場合、true を返す。

function isDone(): boolean

引数
なし

戻り値
boolean型で返ってくる

isStopped()

ポーラーが停止している場合、true を返す。

function isStopped(): boolean

引数
なし

戻り値
boolean型で返ってくる

onProgress((state: TState) => void)

ポーリングが完了するたびに指定されたコールバックを呼び出し、ポーラの操作の現在の状態を送信します。これは、指定されたコールバック関数の更新の受信を停止するために使用することができるメソッドを返します。

function onProgress(callback: (state: TState) => void): CancelOnProgress

引数
callback: (state: TState) => void
ポーラの操作の現在の状態

戻り値
CancelOnProgress
指定されたコールバック関数の更新の受信を停止するために使用することができるメソッド

poll({ abortSignal?: AbortSignalLike })

1つのポーリング要求が終了した時点で解決するプロミスを返します。これは、Pollerの操作のupdateメソッドを呼び出すことで行われます。

function poll(options?: { abortSignal?: AbortSignalLike }): Promise<void>

引数
options: { abortSignal: AbortSignalLike }
DOM要求(Fetchなど)と通信し、必要に応じてAbortControllerオブジェクトを介して中止できるようにするシグナルオブジェクトを引数として渡す

戻り値
Promise<void>
戻り値なし

pollUntilDone()

基礎となる操作が完了した時点で解決されるプロミスを返します。

function pollUntilDone(): Promise<TResult>

引数
なし

戻り値
Promise<TResult> 操作の結果値をプロミスで返す。

stopPolling()

ポーラーを停止します。この後、手動および自動のリクエストは送信できなくなります。

function stopPolling()

引数
なし

戻り値
なし

toString()

操作の toString メソッドを呼び出して、ポーラの操作のシリアル化されたバージョンを返します。

function toString(): string

引数
なし

戻り値
String型で返ってくる。


PollOpearationState

  • error
  • isCancelled
  • isCompleted
  • isStarted
  • result

以上の順番でプロパティーの説明を記述します。

error

操作でエラーが発生した場合に返ってきます。

error?: Error

プロパティーの値
Errorが返ってきます。

isCancelled

操作がキャンセルされたか否かを返します。

isCancelled?: boolean

プロパティーの値
boolean型で返ってきます。

isCompleted

操作が完了しているか否かを返します。

isCompleted?: boolean

プロパティーの値
boolean型で返ってきます。

isStarted

操作が開始されているか否かを返します。

isStarted?: boolean

プロパティーの値
boolean型で返ってきます。

result

期待されるタイプの結果で操作が終了した場合に返ってきます。

result?: TResult

プロパティーの値
実行していた操作の情報が返ってきます。


まとめ

PollerLikeとPollOperationStateのどちらも長時間実行を行わなければならない操作が呼び出された場合に使われるインターフェースです。

双方の違いとしましては、PollerLikeはメソッドを呼び出してポーラーを操作するインターフェースです。

PollOperationStateは実行された操作の情報を取得し、値を返してくれるインターフェースです。

参考にした資料👇
PollerLike interface
PollOperationState interface

前回説明した内容👇
beginCreateOrUpdateとbeginCreateOrUpdateAndWaitの違い