Это соответствует вашему определению обратного вызова?

StackOverflow https://stackoverflow.com/questions/615642

Вопрос

Определение обратного вызова:

Функция, которая устанавливается как свойство внутри Компонента. И обычно вызывается, когда какое-либо событие происходит в Компоненте.

Например:

Если вы хотите отобразить диалоговое окно с надписью "Я нажал" , когда пользователь нажимает на Компонент 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 вызывал ее позже.

да, это обратный вызов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top