Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

това дали е рекурсия ?
http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=18299
Страница 1 от 1

Автор:  slav4o.com [ Пет Апр 01, 2022 12:31 am ]
Заглавие:  това дали е рекурсия ?

това е Node.js т.е. javaScript:
Код:

var myTimeout;

function SendCommand() {
    globals.commandIF = true;
    myTimeout = setTimeout(SendCommand, 1000);
    globals.connSocket.write(globals.commandString);
}




Имам и едно място откъдето мога да извикам clearTimeout(myTimeout); при което ефектът е какъвто ми трябва.
По същество това нещо праща едни данни през 1 сек. докато не получи потвърждение, че са получени от отсрещната страна. Изглежда, че работи, но възможно ли е да се получава рекурсия, и след голям брой повторения да се получи stack overflow ? Функцията SendCommand() не я викам вътре, просто я задавам като callback, ама все пак ?

Автор:  TheWizard [ Пет Апр 01, 2022 12:38 am ]
Заглавие:  Re: това дали е рекурсия ?

setTimeout( .. ) не вика SendCommand() а cамо сетва
timer_callback = SendCommand .... и стартира таймера
който ще свърши след секунда демек чак тогава обработчика на таймера ще викне колбака
но е валидно ако таймера е оне-шот
ако е репиит може да стане мазало ... по принцип

Автор:  ps66 [ Пет Апр 01, 2022 12:39 am ]
Заглавие:  Re: това дали е рекурсия ?

не е

пускаш таймера на 1с за следващия период
пращащ данни и излизаш

Автор:  slav4o.com [ Пет Апр 01, 2022 12:46 am ]
Заглавие:  Re: това дали е рекурсия ?

Благодаря за бързите отговори. Ами и аз така мислех, ама като в онзи виц на Шкумбата: "исках да ми го каже специалист" :)
TheWizard написа:
но е валидно ако таймера е оне-шот
ако е репиит може да стане мазало ... по принцип


ами то е one-shot. То не е със setInterval. Ама ако не се получи потвърждение се зарежда следващият патрон, за друг единичен изстрел.

Автор:  bateAz [ Пон Апр 04, 2022 4:51 pm ]
Заглавие:  Re: това дали е рекурсия ?

Определението за рекурсия е следното: "Рекурсия - виж рекурсия!"

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/