Explorar o código

fix(build): avoid using async/await syntax

Evan You %!s(int64=5) %!d(string=hai) anos
pai
achega
438754a0d1
Modificáronse 1 ficheiros con 14 adicións e 10 borrados
  1. 14 10
      packages/runtime-core/src/apiSetupHelpers.ts

+ 14 - 10
packages/runtime-core/src/apiSetupHelpers.ts

@@ -1,3 +1,4 @@
+import { isPromise } from '../../shared/src'
 import {
   getCurrentInstance,
   SetupContext,
@@ -232,19 +233,22 @@ export function mergeDefaults(
  * Runtime helper for storing and resuming current instance context in
  * async setup().
  */
-export async function withAsyncContext<T>(
-  awaitable: T | Promise<T>
-): Promise<T> {
+export function withAsyncContext<T>(awaitable: T | Promise<T>): Promise<T> {
   const ctx = getCurrentInstance()
   setCurrentInstance(null) // unset after storing instance
   if (__DEV__ && !ctx) {
     warn(`withAsyncContext() called when there is no active context instance.`)
   }
-  let res: T
-  try {
-    res = await awaitable
-  } finally {
-    setCurrentInstance(ctx)
-  }
-  return res
+  return isPromise<T>(awaitable)
+    ? awaitable.then(
+        res => {
+          setCurrentInstance(ctx)
+          return res
+        },
+        err => {
+          setCurrentInstance(ctx)
+          throw err
+        }
+      )
+    : (awaitable as any)
 }