はじめに
Node-RED の Functionノードに関し、await を使った処理が使えそうだったものの、それをシンプルに確認したくなって今回の内容を試しました。
試した手順
環境準備
とりあえず以下のインストール・起動用のコマンドで、今回のお試し用の環境を用意します(ローカルインストールで進めています)。
npm i node-red
npx node-red
その後、 http://127.0.0.1:1880/ にブラウザでアクセスして、Node-RED のフローを作っていきます。
フローの作成
シンプルに、Functionノードで await を使った、何らかの結果の出力を試します。
作成したフローは以下のとおりです。
そして、Functionノードには以下の処理を書きました。
const delay = ms => new Promise(res => setTimeout(res, ms));
try {
// 3秒待つ
await delay(3000);
msg.payload = "✅ 3秒経過しました";
return msg;
} catch (err) {
node.error("Async 処理でエラー:", err);
return null;
}
あとは、これを実行してみます。Injectノードのボタンを押すと、3秒後に以下のデバッグ出力が行われたことが確認できました。