下面的代碼摘自Twisted關於AMP的文檔(link)。當向d添加回調函數時,會自動添加一個「協議」參數,並在調用reactor.run()時自動運行延遲。Twisted:在使用pyglet-twisted時從終點調用Deferred的方式
def connect():
endpoint = TCP4ClientEndpoint(reactor, "127.0.0.1", 8750)
factory = Factory()
factory.protocol = AMP
return endpoint.connect(factory)
d = connect()
def connected(protocol):
return protocol.callRemote(
RegisterUser,
username=u'alice'
d.addCallback(connected)
reactor.run()
在我的代碼,一切是完全一樣的,只是我一直在使用pyglet捻(link)與cocos2d的,所以我不能叫reactor.run(),因爲反應堆開始在同一時間被作爲應用程序。
如果我調用reactor.run(),我得到一個錯誤,說明reactor已經在運行。
如果我不這樣做,推遲的似乎不會被調用。
我一直在試圖與reactor.callLater,reactor.callWhenRunning調用它,但都需要一個參數。傳入「無」不起作用。
所以我的問題是,我應該如何讓這個延期運行而不調用reactor.run()。
謝謝!
謝謝!我忘了提及我修改了pyglet來調用reactor.run()。我再看了一遍這個問題,結果發現問題出在Cocos2d被硬編碼以使用pyglet的事件循環的方式,因此pygletreactor中的循環沒有被調用。 – Robert