File tree 1 file changed +11
-6
lines changed
1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change 8
8
isTrue ,
9
9
isObject ,
10
10
hasSymbol ,
11
- isPromise
11
+ isPromise ,
12
+ remove
12
13
} from 'core/util/index'
13
14
14
15
import { createEmptyVNode } from 'core/vdom/vnode'
@@ -51,17 +52,21 @@ export function resolveAsyncComponent (
51
52
return factory . resolved
52
53
}
53
54
55
+ const owner = currentRenderingInstance
56
+ if ( isDef ( factory . owners ) && factory . owners . indexOf ( owner ) === - 1 ) {
57
+ // already pending
58
+ factory . owners . push ( owner )
59
+ }
60
+
54
61
if ( isTrue ( factory . loading ) && isDef ( factory . loadingComp ) ) {
55
62
return factory . loadingComp
56
63
}
57
64
58
- const owner = currentRenderingInstance
59
- if ( isDef ( factory . owners ) ) {
60
- // already pending
61
- factory . owners . push ( owner )
62
- } else {
65
+ if ( ! isDef ( factory . owners ) ) {
63
66
const owners = factory . owners = [ owner ]
64
67
let sync = true
68
+
69
+ if ( owner ) owner . $on ( 'hook:destroyed' , ( ) => remove ( owners , owner ) )
65
70
66
71
const forceRender = ( renderCompleted : boolean ) => {
67
72
for ( let i = 0 , l = owners . length ; i < l ; i ++ ) {
You can’t perform that action at this time.
0 commit comments