0
Beantwoord
Циклическое повторение функции
Alexey Grishanin 10 jaar geleden
in iRidium Script / Interface scripts
•
bijgewerkt door Oksana (expert) 10 jaar geleden •
2
Добрый день.
Поясните пожалуйста почему в следующем скрипте:
function byte1(val)
{
return val >>> 24
};
function ReadEvent(val)
{
IR.Log("Значение байта 1: "+ byte1(val));
};
function WriteLog ()
{
IR.Log("просто сообщение")
};
IR.AddListener(IR.EVENT_START,0,function()
{
IR.SetInterval(5000,WriteLog);
IR.SetInterval(5000,ReadEvent(1830317336));
});
функция ReadEvent не работает циклично через каждые 5 сек.? В то время как WriteLog работает, т.е. код исполняется каждые 5 сек.
Поясните пожалуйста почему в следующем скрипте:
function byte1(val)
{
return val >>> 24
};
function ReadEvent(val)
{
IR.Log("Значение байта 1: "+ byte1(val));
};
function WriteLog ()
{
IR.Log("просто сообщение")
};
IR.AddListener(IR.EVENT_START,0,function()
{
IR.SetInterval(5000,WriteLog);
IR.SetInterval(5000,ReadEvent(1830317336));
});
функция ReadEvent не работает циклично через каждые 5 сек.? В то время как WriteLog работает, т.е. код исполняется каждые 5 сек.
Customer support service by UserEcho
The SetInterval method cannot take function activation as a parameter. Only a link to the function is sent to the method. Or, if you need to execute the function activation with a parameter, you need to wrap the activation inot the unnamed function. See the example:
IR.SetInterval(5000, function () {
ReadEvent(1830317336)
]);
or named:
function ReadEventCall(){
ReadEvent(1830317336)
}
IR.SetInterval(5000, ReadEventCall);
_______________________________________________________________________________________________________
Добрый день, Алексей!
Метод SetInterval не может принимать вызов функции как параметр. В метод передается только ссылка на функцию или же если требуется выполнить вызов функции с параметром, то надо обернуть вызов в не именованную функцию. См. пример:
IR.SetInterval(5000, function () {
ReadEvent(1830317336)
]);
или именованную:
function ReadEventCall(){
ReadEvent(1830317336)
}
IR.SetInterval(5000, ReadEventCall);