Переглянути джерело

fix: make sure global state is restored in the case of an exception in macrotask callback (#9093)

Mitar 7 роки тому
батько
коміт
b111de486b
1 змінених файлів з 5 додано та 3 видалено
  1. 5 3
      src/core/util/next-tick.js

+ 5 - 3
src/core/util/next-tick.js

@@ -81,9 +81,11 @@ if (typeof Promise !== 'undefined' && isNative(Promise)) {
 export function withMacroTask (fn: Function): Function {
   return fn._withTask || (fn._withTask = function () {
     useMacroTask = true
-    const res = fn.apply(null, arguments)
-    useMacroTask = false
-    return res
+    try {
+      return fn.apply(null, arguments)
+    } finally {
+      useMacroTask = false    
+    }
   })
 }