Twisted网络编程必备(2)
转自:http://www.yybug.com/read-htm-tid-15324.html 使用异步的方式工作的结果 除了反应器reactor之外, Deferred 可能是最有用的Twisted对象。你可能在Twisted程序中多次用到Deferred,所有有必要了解它是如何工作的。Deferred可能在开始的时候引起困惑,但是它的目的是简单的: 保持对非同步活动的跟踪,并且获得活动结束时的结果 。 Deferred可以按照这种方式说明:可能你在饭店中遇到过这个问题,如果你在等待自己喜欢的桌子时,在一旁哼哼小曲。带个寻呼机是个好主意,它可以让你在等待的时候不至于孤零零的站在那里而感到无聊。你可以在这段时间出去走走,到隔壁买点东西。当桌子可用时,寻呼机响了,这时你就可以回到饭店去你的位置了。 一个Deferred类似于这个寻呼机。它提供了让程序查找非同步任务完成的一种方式,而在这时还可以做其他事情。当函数返回一个Deferred对象时,说明获得结果之前还需要一定时间。为了在任务完成时获得结果,可以为Deferred指定一个事件处理器。 当编写一个 启动非同步操作的函数时,返回一个Deferred对象 。当操作完成时,调用Deferred的 callback 方法来返回值。如果操作失败,调用Deferred. errback 函数来跑出异常。例子2