Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4658)

Unified Diff: chrome/common/extensions/docs/server2/future.py

Issue 438403002: Conver APIListDataSource to use Future.Then() rather than Get(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/future.py
diff --git a/chrome/common/extensions/docs/server2/future.py b/chrome/common/extensions/docs/server2/future.py
index 51c284235cc7706d4f9c9df0f2740cdf18d409b0..8d6312923e0e0418bf2d34753e1854c1a02e0bd3 100644
--- a/chrome/common/extensions/docs/server2/future.py
+++ b/chrome/common/extensions/docs/server2/future.py
@@ -69,13 +69,31 @@ class Future(object):
'''Creates and returns a future that runs |callback| on the value of this
future, or runs optional |error_handler| if resolving this future results in
an exception.
+
+ If |callback| returns a Future then Then() will resolve to the same value
Yoyo Zhou 2014/08/05 21:52:36 These 2 sentences are confusing next to each other
not at google - send to devlin 2014/08/05 23:00:54 This is tricky to explain. I had another go.
+ of that Future. Otherwise, Then() will resolve to that value.
+
+ For example,
+
+ def fortytwo():
+ return 42
+ def inc(x):
+ return x + 1
+ def inc_future(x):
+ return Future(value=x + 1)
+
+ fortywho().Then(inc).Get() ==> 43
+ fortywho().Then(inc_future).Get() ==> 43
'''
def then():
+ val = None
try:
val = self.Get()
except Exception as e:
- return error_handler(e)
- return callback(val)
+ val = error_handler(e)
+ else:
+ val = callback(val)
+ return val.Get() if isinstance(val, Future) else val
return Future(callback=then)
def Get(self):

Powered by Google App Engine
This is Rietveld 408576698