File tree 1 file changed +14
-13
lines changed
1 file changed +14
-13
lines changed Original file line number Diff line number Diff line change @@ -16,15 +16,15 @@ use super::promise_future::PromiseFuture;
16
16
/// See the documentation for [`done`](struct.Promise.html#method.done) for more information.
17
17
#[ derive( Debug , Clone ) ]
18
18
pub struct DoneHandle {
19
- callback : Value ,
20
- done : Value ,
19
+ state : Value ,
21
20
}
22
21
23
22
impl Cancel for DoneHandle {
24
23
fn cancel ( & mut self ) {
25
24
js ! { @( no_return)
26
- @{ & self . done} [ 0 ] = true ;
27
- @{ & self . callback} . drop( ) ;
25
+ var state = @{ & self . state} ;
26
+ state. cancelled = true ;
27
+ state. callback. drop( ) ;
28
28
}
29
29
}
30
30
}
@@ -146,29 +146,30 @@ impl Promise {
146
146
callback ( value ) ;
147
147
} ;
148
148
149
- let callback = js ! ( return @{ Once ( callback ) } ; ) ;
149
+ let state = js ! (
150
+ var callback = @{ Once ( callback ) } ;
150
151
151
- let done = js ! (
152
- var callback = @{ & callback} ;
153
- var done = [ false ] ;
152
+ var state = {
153
+ cancelled: false ,
154
+ callback: callback
155
+ } ;
154
156
155
157
// TODO don't swallow any errors thrown inside callback
156
158
@{ self } . then( function ( value ) {
157
- if ( !done [ 0 ] ) {
159
+ if ( !state . cancelled ) {
158
160
callback( value, true ) ;
159
161
}
160
162
} , function ( value ) {
161
- if ( !done [ 0 ] ) {
163
+ if ( !state . cancelled ) {
162
164
callback( value, false ) ;
163
165
}
164
166
} ) ;
165
167
166
- return done ;
168
+ return state ;
167
169
) ;
168
170
169
171
CancelOnDrop :: new ( DoneHandle {
170
- callback,
171
- done,
172
+ state,
172
173
} )
173
174
}
174
175
You can’t perform that action at this time.
0 commit comments