Подмена функции для whenChanged в wb-rules

Добрый день!

Какая функция будет вызываться в таком коде?

function regulation_function_1(newValue, devName, cellName) { ... };
function regulation_function_2(newValue, devName, cellName) { ... };
var current_regulation = regulation_function_1;

    defineRule(rule_name, {
        whenChanged: device + '/' + cell,
        then: current_regulation
    });

current_regulation = regulation_function_2;

Здравствуйте! Чтобы функция выполнилась, нужно ставить () после имени функции:

current_regulation();

При первом просмотре правил после определения правила переменной current_regulation будет присвоена функция regulation_function_2. Соответственно при дальнейшем выполнении правила будет вызываться функция regulation_function_2, если вызывать как current_regulation();

Не совсем понял, можно еще раз? Правильно будет вот так?

function regulation_function_1(newValue, devName, cellName) { ... };
function regulation_function_2(newValue, devName, cellName) { ... };
var current_regulation = regulation_function_1;

defineRule(rule_name, {
    whenChanged: device + '/' + cell,
    then: current_regulation()
});

current_regulation = regulation_function_2;

Да. Если вы хотите именно вызывать функцию current_regulation на выполнение из правила, то делать это нужно так:

current_regulation();

Скобки указывают на то, что нужно выполнить функцию, присвоенную переменной current_regulation.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.