cupidanish Ответов: 1

Когда вызывается функция обратного вызова, делает ли она обратный вызов синхронным?


обратный вызов - это функция асинхронная, верно? когда мы посылаем функцию в качестве аргумента и вызываем обратный вызов, всегда ли это делает функцию обратного вызова синхронной? Если я получаю ответ "да", то у меня нет сомнений в обратном вызове. так помоги же мне, прав я или нет?

Что я уже пробовал:

function a() {
  setTimeout(function() {
    console.log("hi")
  }, 5000)
}

function b() {
  console.log("hello");
}

a();
b();


// привет
// через 5 секунд Привет


который находится в асинхронном режиме

НО

function a(callback) {
  setTimeout(function() {
    console.log("hi");
    callback();
  }, 5000)
}

function b() {
  console.log("hello");
}

a(b);


// через 5 секунд Привет
// привет

Вот как это работает все время?
Является ли функция обратного вызова все время синхронной?

1 Ответов

Рейтинг:
2

F-ES Sitecore

Первый фрагмент кода вы называете "а", который устанавливает таймер так, что "привет" записывается через 5 секунд. Затем вы звоните "Б", поэтому "привет" пишется немедленно. То, что вы увидите в консоли, - это немедленное "привет", а затем через 5 секунд "Привет".

Во втором фрагменте кода Вы вызываете "a" и передаете "b" в качестве параметра. "а" запускает таймер так, что через 5 секунд он пишет "Привет", а затем вызывает любой метод, который вы передали в качестве param (b). Так что в консоли вы сразу ничего не получите, а через 5 секунд получите "привет", а затем "привет".

Таким образом, ваш код делает то, что вы ему говорите, это не имеет ничего общего с синхронным и асинхронным.