Это соответствует вашему определению обратного вызова?
-
03-07-2019 - |
Вопрос
Определение обратного вызова:
Функция, которая устанавливается как свойство внутри Компонента. И обычно вызывается, когда какое-либо событие происходит в Компоненте.
Например:
Если вы хотите отобразить диалоговое окно с надписью "Я нажал" , когда пользователь нажимает на Компонент componentB , вы должны написать метод, сохраненный в виде переменной. который делает это:
var mouseDownCallbackFunction = function() {
alert("I was clicked!");
};
Далее , вы должны установить эту функцию внутри компонента следующим образом ...
// Set the Component to display the dialog when the
// user presses the mouse down on it.
componentB.setMouseDownCallback(mouseDownCallbackFunction);
И это приведет к тому, что mouseDownCallbackFunction отобразит " меня нажали " в окне предупреждения при щелчке по компоненту.
Решение
В Си это будет действительный обратный вызов. Однако я не настолько знаком с JavaScript, чтобы сказать, так ли это или нет, потому что я не уверен, как обрабатываются переменные в отношении их областей памяти. Р>
В C / C ++ вы можете объявить пустой указатель:
void aFunction()
{
do stuff
}
int main()
{
void* myCallback = &aFunction;
componentB.setMouseDownCallback(myCallback);
}
Будет работать. Р>
Однако, несмотря на отсутствие у меня знаний JavaScript, я знаю, что
componentB.setMouseDownCallback(function() {
alert("I was clicked!");
};
);
также действителен.
РЕДАКТИРОВАТЬ добавил не ко второму предложению: "Я не такой знакомый"
Другие советы
Да, это описание точного определения обратного вызова ...
Технически в JavaScript это замыкание , поскольку оно может связываться с любыми переменными в области видимости, на которые есть ссылки.
Но замыкания - это просто лучшая форма обратного вызова, так что да, это обратный вызов. Обратный вызов в C более примитивен, предоставляя только ссылку на указатель на типизированную функцию, без привязки к какому-либо контексту.
Да, обратный вызов - это функция, которая определена на более высоком уровне, чем она вызывается. Ваш клиентский код создает функцию, а затем передает ее в качестве параметра componentB
, чтобы componentB
вызывал ее позже.
да, это обратный вызов.