Псевдокод:
while (list.length() > 1)
{
list.removeElementAt(0);
}
В C, который был бы допустимым обратным вызовом. Однако я не так familar с JavaScript, чтобы сказать, ли это или не потому что я не уверен, как переменные рассматривают относительно их ячеек памяти.
В C/C++ Вы могли объявить пустой указатель:
void aFunction()
{
do stuff
}
int main()
{
void* myCallback = &aFunction;
componentB.setMouseDownCallback(myCallback);
}
Работал бы.
Однако несмотря на мое отсутствие знаний JavaScript, я действительно знаю это
componentB.setMouseDownCallback(function() {
alert("I was clicked!");
};
);
допустимо также.
EDIT, добавленная не к второму предложению: "Я не так familar"
Да, обратный вызов является функцией, это определяется в более высоком уровне, чем это называют. Ваш клиентский код создает функцию, затем передает ее в качестве параметра componentB
, для componentB
назвать его позже.
Да, это описывает точное определение обратного вызова...
В JavaScript, технически, это - закрытие, так как он может связать с любыми переменными в объеме, на которые ссылаются.
Но закрытия являются просто лучшей формой обратного вызова, таким образом, да это - обратный вызов. Обратный вызов в C более примитивен, обеспечивая только ссылку указателя на введенную функцию, не связывая ни с каким контекстом.