Rich UI ジョブ・スケジューラー

Rich UI ジョブ・スケジューラーは、指定したミリ秒の経過後に、 カスタマイズした関数を呼び出すことができるタイマーです。複数のジョブを スケジュールに入れることができ、実行時の状態に応じてそれらを取り消すことが できます。

ワークスペースで、次の例を試すことができます。
import com.ibm.egl.rui.widgets.Button;
import egl.javascript.Job; 

handler MyHandler type RUIhandler { initialUI = [stopButton],
                                    onConstructionFunction = initialization }

   stopButton Button{text="Stop!", onclick ::= pleaseStop};	
   doThis Job{runFunction = myRunFunction};

   function initialization()
      doThis.repeat(1000);
   end

   function myRunFunction()
      sysLib.writeStdOut(currentTime());
   end

   function pleaseStop(e event in)
      doThis.cancel();
   end
end
この機能を使用するには、次の import ステートメントを入力する必要があります。
   import egl.javascript.Job; 

Widget 型で有効な Ctrl-Shift-O メカニズムを使用してステートメントを 追加することはできません。

次の 2 つの定義により、この関係が明確化 されます。
このジョブ・スケジューラーは、Job という EGL 外部型 に基づく変数です。変数の宣言時に、以下のプロパティーを設定できます。
name
ジョブ・スケジューラーを識別するために EGL デバッガー によって使用されます。このプロパティーを省略した 場合、name の値は変数名になります。
runFunction
実行関数を識別します。実行関数は、パラメーターも 戻り値も持ちません。
ジョブ・スケジューラーを使用して 以下の関数を呼び出すことができます。
schedule (int milliseconds)
指定したミリ秒数のタイマーを即時に設定し、その後に実行関数を呼び出します。この呼び出しが行われるもっとも早い時期は、タイマーが経過するか、現行関数が 終了するかのいずれか後のほうです。milliseconds を省略した 場合に呼び出しが行われるもっとも早い時期は、現行関数が終了した直後です。
repeat (int milliseconds)
指定したミリ秒数のタイマーを即時に設定し、実行関数を繰り返し呼び出します。

タイマーは、 実行関数が開始されるたびにリセットされます。最初の呼び出しを含む実行関数の各呼び出しの規則は、次のとおりです。つまり、呼び出しが行われるもっとも早い時期は、タイマーが経過するか、現行関数が 終了するかのいずれか後のほうです。

cancel()
後で起動されたジョブの起動を取り消します。

実行関数の呼び出しにより、別の関数の実行が中断されることはありません。 例えば、ジョブがスケジュールに入れられている時間と実行関数が呼び出される時間 の間の時間がある場合に、ユーザーがボタンをクリックしてイベント・ハンドラーを スケジュールに入れる可能性があります。 この場合、ジョブ関数の呼び出しは、少なくともイベント・ハンドラーが独自の下位関数 (ある場合) を呼び出して終了されるまで待機されます。

JOB 型の複数の変数を作成でき、この方法で、複数のジョブをスケジュールに入れる ことができ、さらに同じ実行関数を呼び出すこともできます。いずれの場合も、 特定の時刻に実行される関数は 1 つのみであり、その関数が完了まで実行されます。

同じ変数を使用してジョブのスケジュールを変更した場合は、その変数の前回の使用が 取り消されます。


フィードバック