如何解决回调地狱问题(任何语言)

xiaoxiao2021-02-28  130

异步回调类型的接口: 代码一下从这函数跳到另一函数,流程不连续,大量回调函数导致代码难以阅读,形成回调地狱问题。 同步阻塞类型的接口: 代码流程清晰,但会阻塞当前线程。 假如有业务流程,同时用到一些异步回调接口、一些同步阻塞接口; 一些特定操作又只能在主业务线程进行; 又得保持主业务线程不阻塞。 如何让代码得流程保持清晰? 那就尽量让代码看起来像同步的。

例如:

class Job{ int step; void run(){ switch(step){ case 1: step=2; doAsyncWork(..., new Callback(this)); return; case 2: step=3; ThreadPool.execute(this); return; case 3: step=4; doSyncAndBlockingWork(...); MainThread.execute(this); return; case 4: step=5; updateDatas(); ... } } }; c/c++中还可以定义一些宏来简化代码

class Job{ int step; void run(){ co_begin(this); co_yield doAsyncWork(..., this->GetCallback()); co_runasync( doSyncAndBlockingWork(...); ); updateDatas(); co_end(); } } };

转载请注明原文地址: https://www.6miu.com/read-42410.html

最新回复(0)