@@ -11,8 +11,20 @@ function createPlatform() {
11
11
}
12
12
13
13
let render : Queue < any > | null = null ;
14
+ let resolveNextTickImmediate = false ;
14
15
15
16
const moduleCache = new Map < string , { [ symbol : string ] : any } > ( ) ;
17
+ const flushNextTick = async ( ) => {
18
+ await Promise . resolve ( ) ;
19
+ if ( render ) {
20
+ try {
21
+ render . resolve ( await render . fn ( ) ) ;
22
+ } catch ( e ) {
23
+ render . reject ( e ) ;
24
+ }
25
+ render = null ;
26
+ }
27
+ } ;
16
28
const testPlatform : TestPlatform = {
17
29
isServer : false ,
18
30
importSymbol ( containerEl , url , symbolName ) {
@@ -39,7 +51,7 @@ function createPlatform() {
39
51
return mod [ symbolName ] ;
40
52
} ) ;
41
53
} ,
42
- nextTick : ( renderMarked ) => {
54
+ nextTick : async ( renderMarked ) => {
43
55
if ( ! render ) {
44
56
render = {
45
57
fn : renderMarked ,
@@ -51,6 +63,10 @@ function createPlatform() {
51
63
render ! . resolve = resolve ;
52
64
render ! . reject = reject ;
53
65
} ) ;
66
+ if ( resolveNextTickImmediate ) {
67
+ resolveNextTickImmediate = false ;
68
+ await flushNextTick ( ) ;
69
+ }
54
70
} else if ( renderMarked !== render . fn ) {
55
71
// TODO(misko): proper error and test
56
72
throw new Error (
@@ -69,14 +85,9 @@ function createPlatform() {
69
85
} ) ;
70
86
} ,
71
87
flush : async ( ) => {
72
- await Promise . resolve ( ) ;
73
- if ( render ) {
74
- try {
75
- render . resolve ( await render . fn ( ) ) ;
76
- } catch ( e ) {
77
- render . reject ( e ) ;
78
- }
79
- render = null ;
88
+ await flushNextTick ( ) ;
89
+ if ( ! render ) {
90
+ resolveNextTickImmediate = true ;
80
91
}
81
92
} ,
82
93
chunkForSymbol ( ) {
0 commit comments