关于callback机制的理解

funcA(funcB), 这里的funcA可能长这样:

funcA(callback) {
    ...
    callback();
    ...
}

可以理解为调用了funcA,再在里面调用了funcB(当然特殊情况就是callback在第一行,但也不影响理解,因为还是先进行了调用funcA这个操作),则称为回调(回过头来调用)。

和直接调用的区别:个人理解是,如果funcA中有时需要调用funcB,有时需要调用funcC,写成callback形式就不用写一个funcA1,再写一个funcA2分别调用了,减少代码冗余。

在封装性上,funcA的调用者不需要管funcB什么时候调用,只知道funcB会被调用,至于什么时候合适调用funcB完全由funcA的代码决定。比如glDisplay(mydisplay),移动窗口,遮挡窗口都会导致重绘,情况复杂多变,但是调用者只须把重绘函数传进去就行,由glDisplay自动调用。

posted @ 2020-03-06 09:51  冲冲冲冲冲  阅读(571)  评论(0)    收藏  举报