Как узнать, что какая-то функция вызвана/запущена?

Есть функция func1, которая должна как-то проверять статус функции func2. Как это сделать?
func1 запускается первой, и косвенно участвует в запуске func2.

Схема:
func1 --> Черный ящик --> func2

function func1() {
if func2 запущена, то..
}

function func2() {
func1 меня вызвали!
}

Нужна не проверка, а какое-то прослушивание.
  • Вопрос задан
  • 176 просмотров
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
Если надо следить за вызовами функции, то можно использовать декоратор:
function decorator(f) {
  return function() {
    f.apply(this, arguments);
    console.log(f.name + ' is called!');
  }
}

function foo() {
  console.log('I am foo!');
}

const bar = decorator(foo);

bar();  // I am foo! \n foo is called!


Если нужен флаг, то можно использовать свойства функции:
function foo() {
  foo.isRunning = true;
  // do something
}

function bar() {
  if (!foo.isRunning) {
    return foo();
  }
  // do something other
}
Ответ написан
Tolly
@Tolly Автор вопроса
Вопрос закрываю, так как я так понял, что решения - нет,
кроме как по timeout, т.е. самозапуск функции с интервалом по времени.
Если, решение есть, пишите отмечу решением.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Если код полностью синхронный:
var flag = false;

function func1() {
  if (Math.random() > 0.5) {
    func2();
  }

  if (flag) {

  }
}

function func2() {
  flag = true;
}


Если есть асинхронность, то нужно смотреть на реальный код и, возможно, его переделывать.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
ЕМНИП, JavaScript - однопоточный, с очередью выполнения для событий. Значит две функции не могут быть вызваны одновременно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
20 апр. 2019, в 16:31
500 руб./в час
20 апр. 2019, в 15:00
10000 руб./за проект
20 апр. 2019, в 14:48
30000 руб./за проект