16.6.10

A simplified deferred method

This is much like the twisted deferred, but is simplified down for use without twisted.
  1. class Deferred(object):  
  2.     def __init__(self):  
  3.         self._callbacks = []  
  4.   
  5.     def add_callback(self, callback):  
  6.         if hasattr(self'result'):  
  7.             callback(self.result)  
  8.         else:  
  9.             self._callbacks.append(callback)  
  10.   
  11.     def callback(self, result):  
  12.         assert not hasattr(self'result')  
  13.         for cb in self._callbacks:  
  14.             cb(result)  
  15.         self.result = result  
  16.   
  17.   
  18. def defer(result):  
  19.     d = Deferred()  
  20.     d.result = result  
  21.     return d  

No comments:

Post a Comment