Zeta
13.Октябрь.2021 14:23:00
1
Добрый день!
Какая функция будет вызываться в таком коде?
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();
Zeta
14.Октябрь.2021 08:11:32
3
Не совсем понял, можно еще раз? Правильно будет вот так?
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
.
system
Закрыл(а) тему
27.Январь.2022 08:20:16
5
Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.