何时执行回调函数?

时间:2014-04-11 01:24:28

标签: callback

我对执行回调函数的时间感到困惑。它在调用某个XYZ函数时作为参数传递。当调用XYZ函数时,它不应该被执行吗?或者在XYZ函数内遇到某个“IF”条件时会执行吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

callback function是在某个事件发生后发生的函数。内存中对回调函数的引用通常传递给另一个函数。这允许其他函数在完成其职责时通过使用特定于语言的语法执行函数来执行回调。

当调用其他函数或者发生某些“IF”条件时,它可以立即执行。执行回调的时间由您将回调函数传递给函数内部的代码确定。

如果您成功打印出一个字符串,那么当您执行回调时,这是 psuedocode 的示例。这假设print()函数如果成功打印字符串则返回TRUE,如果不成功则返回FALSE:

function XYZ(string,referenceToCallbackFunction)
{
    boolean printSuccess = print(string); // returns TRUE on success
    if(printSuccess == TRUE)
    {
        execute(referenceToCallbackFunction);  // Here we execute or "call" the callback
    }
    else
    {
        /* we didn't execute the callback
           because printing the string was not successful
        */
    }
}

这是回调函数定义的psuedocode:

function callback()
{
    print('Hurray! Printing succeeded in the other function.');
}

这是对另一个函数的函数调用,其中传递了对回调的引用:

referenceToCallbackFunction = callback; // Notice the lack of () means don't execute the function
XYZ("Let's see if this prints out",referenceToCallbackFunction); // This executes XYZ and passes the callback reference as a parameter so that XYZ can execute it at a later time

输出结果为:

Let's see if this prints out
Hurray! Printing succeeded in the other function.