我的问题比基于代码的概念更具概念性。我正在寻找使用子类处理异步程序流的最佳方法。
想象一下,您构建了一个REST服务,并将整个通信代码外包给一个名为REST
的类。我想从我的数据库中读取所有类别并在我的GUI中显示它们。如果我们是同步的,我们可以写:
cats = REST.GetCategories();
UpdateMyGUI(cats);
但是因为我们是异步的,所以在UpdateMyGUI(cats)
返回之前会调用REST.GetCategories()
。因此,我们最终得到了一个无穷无尽的子类函数调用列表:类似
REST.GetCategories() => $http() = (WaitingforHTTPResponse) => GetResult() => AnalyseResult() => ?
我的问题:从服务器获得结果后,让程序调用{{1}}的最佳方法是什么?
由于UpdateMyCategories()
是主程序的一部分,因此在UpdateMyCategories()
类中直接调用此函数(并进行硬编码)至少是凌乱的编码。我的第一个想法是创建一个像
REST
并使用参数扩展var _data = { func: UpdateMyCategories, params: [] };
类中的所有函数,以将REST
对象转发到最后一个函数,在该函数中可以调用它。我也可以转发事件名称而不是函数指针。
但是没有更好的方法吗?这里真正的JavaScript方式是什么?