_deferred.py
1 # SPDX-License-Identifier: MIT 2 # 3 # Copyright (c) 2021 The Anvil Extras project team members listed at 4 # https://github.com/anvilistas/anvil-extras/graphs/contributors 5 # 6 # This software is published at https://github.com/anvilistas/anvil-extras 7 8 from anvil.js import window as _window 9 10 __version__ = "3.1.0" 11 12 13 class Deferred: 14 def init_promise(self, resolve, reject): 15 self._resolve = resolve 16 if not self._pending: 17 resolve() 18 19 def __init__(self): 20 self._promise = None 21 self._resolve = None 22 self._pending = True 23 24 @property 25 def promise(self): 26 if self._promise is None: 27 self._promise = _window.Promise(self.init_promise) 28 return self._promise 29 30 def resolve(self, value=None): 31 self._pending = False 32 if self._resolve is not None: 33 self._resolve(value)