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