Функция обратного вызова выполняется перед исходной функцией - PullRequest
0 голосов
/ 28 апреля 2018

Я пишу фрагмент для демонстрации функции обратного вызова. У меня есть функция альфа, в которой я передаю функцию бета в качестве обратного вызова. Я предполагаю, что первая альфа должна быть выполнена, и после того, как вся работа выполнена, бета должна быть выполнена Почему я вижу, как бета-версии выполняются первыми, а при обратном вызове они выполняются, когда вся работа завершена - что я узнал.

function alpha() {
  alert('hi');
}

function beta() {
  alert('hello');
}

alpha(beta());

Ожидается:

привет тогда привет

Результат:

привет тогда привет

1 Ответ

0 голосов
/ 28 апреля 2018

Это не делает то, что вы думаете:

alpha(beta());

Это немедленно вызывает beta, а затем передает результат из beta() в вызов alpha. И поскольку beta ничего не возвращает, этот результат равен undefined.

Вам нужно отправить саму функцию в качестве обратного вызова, а не результат выполнения функции:

alpha(beta);

Дополнительно в вашем alpha вам нужно будет на самом деле позвонить обратный вызов:

function alpha(callback){
    alert('hi');
    callback();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...