Асинхронная отправка сообщений
Если функции нужно выполнить асинхронное действие перед отправкой сообщения, она не может вернуть (return) сообщение в конце. Вместо этого функция вызывает node.send() и передаёт ей сообщения для отправки. node.send() принимает то же расположение сообщений, которое может вернуть функция.
Например:
doSomeAsyncWork(msg, function(result) {
msg.payload = result;
node.send(msg);
});
return;
Узел function клонирует каждый объект сообщения, который вы передаёте в node.send. Так сообщения, которые функция использует повторно, не изменяются случайно.
Чтобы первое сообщение не клонировалось, передайте false вторым аргументом node.send. Это нужно, если сообщение содержит то, что нельзя клонировать, или чтобы уменьшить затраты на отправку.
node.send(msg,false);