@@ -37,14 +37,13 @@ export default function visitAwaitBlock(
37
37
38
38
const promise = block . getUniqueName ( `promise` ) ;
39
39
const resolved = block . getUniqueName ( `resolved` ) ;
40
- const status = block . getUniqueName ( `status` ) ;
41
- const select_block_type = block . getUniqueName ( `select_block_type` ) ;
42
40
const await_block = block . getUniqueName ( `await_block` ) ;
43
41
const await_block_type = block . getUniqueName ( `await_block_type` ) ;
44
42
const token = block . getUniqueName ( `token` ) ;
45
43
const await_token = block . getUniqueName ( `await_token` ) ;
46
- const update = block . getUniqueName ( `update` ) ;
47
44
const handle_promise = block . getUniqueName ( `handle_promise` ) ;
45
+ const replace_await_block = block . getUniqueName ( `replace_await_block` ) ;
46
+ const old_block = block . getUniqueName ( `old_block` ) ;
48
47
const value = block . getUniqueName ( `value` ) ;
49
48
const error = block . getUniqueName ( `error` ) ;
50
49
const create_pending_block = node . pending . _block . name ;
@@ -58,43 +57,39 @@ export default function visitAwaitBlock(
58
57
block . addVariable ( resolved ) ;
59
58
60
59
block . builders . init . addBlock ( deindent `
60
+ function ${ replace_await_block } (${ token } , type, ${ value } , ${ params } ) {
61
+ if (${ token } !== ${ await_token } ) return;
62
+
63
+ var ${ old_block } = ${ await_block } ;
64
+ ${ await_block } = (${ await_block_type } = type)(${ params } , ${ resolved } = ${ value } , #component);
65
+
66
+ if (${ old_block } ) {
67
+ ${ old_block } .u();
68
+ ${ old_block } .d();
69
+ ${ await_block } .c();
70
+ ${ await_block } .m(${ anchor } .parentNode, ${ anchor } );
71
+ }
72
+ }
73
+
61
74
function ${ handle_promise } (${ promise } , ${ params } ) {
62
75
var ${ token } = ${ await_token } = {};
63
76
64
77
if (@isPromise(${ promise } )) {
65
78
${ promise } .then(function(${ value } ) {
66
- if (${ token } !== ${ await_token } ) return;
67
- ${ await_block } .u();
68
- ${ await_block } .d();
69
- ${ await_block } = (${ await_block_type } = ${ create_then_block } )(${ params } , ${ resolved } = ${ value } , #component);
70
- ${ await_block } .c();
71
- ${ await_block } .m(${ anchor } .parentNode, ${ anchor } );
79
+ ${ replace_await_block } (${ token } , ${ create_then_block } , ${ value } , ${ params } );
72
80
}, function (${ error } ) {
73
- if (${ token } !== ${ await_token } ) return;
74
- ${ await_block } .u();
75
- ${ await_block } .d();
76
- ${ await_block } = (${ await_block_type } = ${ create_catch_block } )(${ params } , ${ resolved } = ${ error } , #component);
77
- ${ await_block } .c();
78
- ${ await_block } .m(${ anchor } .parentNode, ${ anchor } );
81
+ ${ replace_await_block } (${ token } , ${ create_catch_block } , ${ error } , ${ params } );
79
82
});
80
83
81
84
// if we previously had a then/catch block, destroy it
82
85
if (${ await_block_type } !== ${ create_pending_block } ) {
83
- if (${ await_block } ) {
84
- ${ await_block } .u();
85
- ${ await_block } .d();
86
- }
87
- ${ await_block } = (${ await_block_type } = ${ create_pending_block } )(${ params } , ${ resolved } = null, #component);
86
+ ${ replace_await_block } (${ token } , ${ create_pending_block } , null, ${ params } );
88
87
return true;
89
88
}
90
89
} else {
91
90
${ resolved } = ${ promise } ;
92
91
if (${ await_block_type } !== ${ create_then_block } ) {
93
- if (${ await_block } ) {
94
- ${ await_block } .u();
95
- ${ await_block } .d();
96
- }
97
- ${ await_block } = (${ await_block_type } = ${ create_then_block } )(${ params } , ${ resolved } , #component);
92
+ ${ replace_await_block } (${ token } , ${ create_then_block } , ${ resolved } , ${ params } );
98
93
return true;
99
94
}
100
95
}
@@ -133,8 +128,7 @@ export default function visitAwaitBlock(
133
128
if ( node . pending . _block . hasUpdateMethod ) {
134
129
block . builders . update . addBlock ( deindent `
135
130
if (${ conditions . join ( ' && ' ) } ) {
136
- ${ await_block } .c();
137
- ${ await_block } .m(${ anchor } .parentNode, ${ anchor } );
131
+ // nothing
138
132
} else {
139
133
${ await_block } .p(changed, ${ params } , ${ resolved } );
140
134
}
0 commit comments