首页 > 解决方案 > 为什么要在这个 API 设计模式中使用回调?

问题描述

我一直在使用为特定站点上的算法交易而制作的 API 包,当我一直在使用它时,我发现一些使用的设计模式非常混乱,让我问他们为什么这样做,这就是我我正在与:

class IBapi(EWrapper, EClient):

    def openOrder(self, orderId, contract, order, orderState):
        super().openOrder(orderId, contract, order, orderState)
        print(order) 


app = IBapi()
app.connect('127.0.0.1', 7497, 123)
app.reqAllOpenOrders() #This triggers the above openOrder method as per their design pattern via a callback

我有这个类 IBApi,它继承了父类 EWrapper 和 EClient,所以我现在可以使用super()符号访问这两个类中的任何方法。如果我想访问说我当前的打开订单,文档说调用该方法app.reqAllOpenOrders,然后触发回调执行openOrder我在 IBApi 类中覆盖的方法,这意味着我可以利用它并获取我的数据。

现在从逻辑上讲,这对我来说有点道理,但是我要问的是为什么要使用这种设计模式?这是否有一个特定的原因,以及为什么他们只是没有更线性的方法,你可以调用一些方法app.getOrders来返回我需要的所有数据的列表并且不使用回调?

标签: python

解决方案


推荐阅读