Задержку в Node-red делают соответствующей нодой, но что делать если нам надо сделать задержку в ноде function внутри, следующий код это делает.
Добавляем в начало ноды function функцию
1 2 3 | function sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); } |
и в коде где нам надо сделать задержку пишем:
1 | await sleep(5000); |
в данном случае задержка будет 5 секунд.
скачать демонстрационный поток:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | [ { "id": "2957c7f06a520e1e", "type": "function", "z": "dc889c94886b52da", "name": "function 1", "func": "function sleep (time) {\n return new Promise((resolve) => setTimeout(resolve, time));\n}\n\n\nnode.send(msg);\nawait sleep(5000);\nnode.send(msg);\nawait sleep(5000);\nnode.send(msg);\nreturn;", "outputs": 1, "timeout": 0, "noerr": 0, "initialize": "", "finalize": "", "libs": [], "x": 580, "y": 760, "wires": [ [ "1652667a15c9e93b" ] ] }, { "id": "6504fb434135fd4f", "type": "inject", "z": "dc889c94886b52da", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 360, "y": 760, "wires": [ [ "2957c7f06a520e1e" ] ] }, { "id": "1652667a15c9e93b", "type": "debug", "z": "dc889c94886b52da", "name": "debug 1", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 820, "y": 760, "wires": [] } ] |
Node-red. Делаем паузу в ноде Function