projects
/
contrib
/
cloudeebus.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
706233b
)
implement FutureResolver.resolve
author
Luc Yriarte
<luc.yriarte@intel.com>
Thu, 23 May 2013 14:45:14 +0000
(16:45 +0200)
committer
Luc Yriarte
<luc.yriarte@intel.com>
Thu, 23 May 2013 14:45:14 +0000
(16:45 +0200)
cloudeebus/cloudeebus.js
patch
|
blob
|
history
diff --git
a/cloudeebus/cloudeebus.js
b/cloudeebus/cloudeebus.js
index
847b552
..
3293e83
100644
(file)
--- a/
cloudeebus/cloudeebus.js
+++ b/
cloudeebus/cloudeebus.js
@@
-181,12
+181,24
@@
cloudeebus.FutureResolver.prototype.resolve = function(value, sync) {
if (this.resolved)
return;
if (this.resolved)
return;
- try {
- this.accept(value, sync);
- }
- catch (e) {
- this.reject(e, sync);
+ var then = (value && value.then && value.then.apply) ? value.then : null;
+ if (then) {
+ var self = this;
+ var acceptCallback = function(arg) {
+ self.accept(arg, true);
+ };
+ var rejectCallback = function(arg) {
+ self.reject(arg, true);
+ };
+ try {
+ then.apply(value, [acceptCallback, rejectCallback]);
+ }
+ catch (e) {
+ this.reject(e, true);
+ }
}
}
+
+ this.accept(value, sync);
};
};
@@
-262,7
+274,7
@@
cloudeebus.Future.prototype.then = function(acceptCB, rejectCB) {
acceptWrapper = function(arg) {
try {
var value = acceptCB.apply(future, [arg]);
acceptWrapper = function(arg) {
try {
var value = acceptCB.apply(future, [arg]);
- resolver.
accept
(value, true);
+ resolver.
resolve
(value, true);
}
catch (e) {
resolver.reject(e, true);
}
catch (e) {
resolver.reject(e, true);
@@
-277,7
+289,7
@@
cloudeebus.Future.prototype.then = function(acceptCB, rejectCB) {
rejectWrapper = function(arg) {
try {
var value = rejectCB.apply(future, [arg]);
rejectWrapper = function(arg) {
try {
var value = rejectCB.apply(future, [arg]);
- resolver.re
ject
(value, true);
+ resolver.re
solve
(value, true);
}
catch (e) {
resolver.reject(e, true);
}
catch (e) {
resolver.reject(e, true);