场景
- 在异步编程时, 往往需要传入函数A作为接收异步调用的输出。 因为当异步逻辑得到数据时,就会调用函数A,我们称函数A为回调函数。在回调函数A里写的逻辑被调用时,如果需要以此结果作为另一个异步调用的参数,那么通常的做法就是在回调函数A里调用异步逻辑,传入回调函数B。以此类推,如果回调函数里不得不调用另一个回调函数,那么就会出现我们常说的
回调地狱(Callback Hell)
. 如何解决?
说明
- 在
C++11
之后可以通过传入lambda
表达式来代替普通函数指针,function
类对象,因此也可以代替回调函数。如以下的回调地狱:
void CallHttp(){
// 执行异步任务
string prefix =