Functionノードを使う(その4)
今回も、前回に引き続きFunctionノードのサンプルフローを見つつざっとその機能を把握してみます。第四回目です。
初期化処理と終了処理
最初のサンプルは「09 - Setup and close」です。Functionノードはフロー実行時だけでなく、Node-RED起動時と終了時にもコードを実行できます。いつも通りFunctionノードのプロパティを見ていきます。
初期化処理タブではglobalコンテキストの変数を0で初期化しています。
続いてコードタブではglobalコンテキストの変数値をインクリメントしてmsg.playloadに格納しています。
終了処理が実行されることを確認するため、コンソール上でNode-REDを停止すると、以下のように最新のglobalコンテキスト内の変数値が出力されます。通常、この手の機能はログ出力が目的ではなく、リソースの解放処理のような後始末をするのに利用するのが一般的だと思います。
28 Oct 22:33:19 - [info] フローを開始します 28 Oct 22:33:19 - [info] フローを開始しました ^C28 Oct 22:34:57 - [info] フローを停止します count: 4 28 Oct 22:34:57 - [info] フローを停止しましたつ
さらに再びNode-REDを起動してフローを実行すると、出力される値がリセットされて1、2、3、、、と増えていくのが確認できると思います。初期化処理タブに記載した内容がNode-RED起動時に実行されて変数値がリセットされたんですね。
というわけで、初期化処理と終了処理の動作が確認できました。パッと使いどころは思いつきませんが、フロー実行のたびに実行するにはコストの高い処理をNode-RED起動時に実行して、終了時に止める、みたいな感じでしょうか。ありがちなパターンかと思います。
非同期初期化
ラストのサンプルは「10 - Asyncronous setup」です。デプロイすると1秒後にログが出力されます。初期化処理でも非同期実行ができるよ、とのことです。これ以上の説明は不要かと思います。
とりあえずまとめ
さて、Functionノードのサンプルをひと通り見てきました。このノードには何でもできる全能感が漂っているので、どのノードを使えばいいか迷ったらこのノードで適当に流そうと思います。
コメント
コメントを投稿