Перезагрузка функции кнопкой

Есть кнопка СТАРТ!, на кнопку нажимаешь, и после определенного интервала (10 секунд к примеру) нужно сделать так, чтобы эта кнопка уже имела совершенно другой смысл - ПЕРЕЗАГРУЗКА.

т.е. мне нужно осуществить перезагрузку функции с помощью кнопки, и нужно чтобы это работало бесконечно - старт -> перезагрузка -> старт -> перезагрузка -> старт....

можно конечно просто перезагружать страницу, но это не вариант.


Ответы (1 шт):

Автор решения: Александр Лесив

/* create_context возращает функцию, которая будет возвращать вашу функцию
 с аргументами, которые вы передадите в create_context */
function create_context(fn, ...params){
  return function(){
    return function(){
      return fn(...params)
    }
  }
}
async function func_to_exec(param_1, param_2, ...params){
  console.log(param_1, param_2, ...params)
  // Функция изменяет свои параметры
  param_1 = param_1 + 'data'
  param_2 = param_1 + ''
  // И продолжает выполнятся
}

let context = create_context(func_to_exec, 'par1', 'par2', 'par3')
let button_handler = context();
let button = document.getElementById('but')
button.onclick = function(e){
  button_handler()
  // Через секунду после нажатия кнопки функция, что выполняется "обнулится", но параметры с которыми она создавалась "запомнены"
  setTimeout(function(){
    button_handler = context();
  }, 1000)
}
<button id="but">Кнопка</button>

→ Ссылка